博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring cloud: Hystrix(六):feign的注解@FeignClient:fallbackFactory(类似于断容器)与fallback方法...
阅读量:6977 次
发布时间:2019-06-27

本文共 2850 字,大约阅读时间需要 9 分钟。

fallbackFactory(类似于断容器)与fallback方法

feign的注解@FeignClient:fallbackFactory与fallback方法不能同时使用,这个两个方法其实都类似于Hystrix的功能,当网络不通时返回默认的配置数据.

fallback方法的使用:

在入口文件开启feign注解功能。

@EnableFeignClients

@EnableEurekaClient@SpringBootApplication@EnableFeignClientspublic class FeignApp {	public static void main(String[] args) {		SpringApplication.run(FeignApp.class, args);	}}

  

2.写一个访问spring-boot-user服务的接口,同时在@FeignClient注解中使用fallback默认返回方法(断容器)

fallback=HystrixClientFallback.class

@FeignClient(name="spring-boot-user", fallback=HystrixClientFallback.class)public interface UserFeignClient {	// 两个坑:1. @GetMapping不支持   2. @PathVariable得设置value	@RequestMapping(value="/simple/{id}", method=RequestMethod.GET)	public User findById(@PathVariable("id") Long id);	}

  

3.写HystrixClientFallback类,并继承UserFeignClient类,当网络不通或者访问失败时,返回固定/默认内容

@Componentpublic class HystrixClientFallback  implements UserFeignClient{	@Override	public User findById(Long id) {		// TODO Auto-generated method stub		User user = new User();		user.setId(0L);		return user;	}}

  

4.controller调用spring-boot-user服务的接口

@RestControllerpublic class MovieController {	@Autowired	private UserFeignClient userFeignClient;		@GetMapping("/movie/{id}")	public User findById(@PathVariable("id") Long id) {		return this.userFeignClient.findById(id);	}	}

  

 

fallbackFactory方法的使用

1.入口文件引入feign注解

@EnableEurekaClient@SpringBootApplication@EnableFeignClientspublic class FeignApp {	public static void main(String[] args) {		SpringApplication.run(FeignApp.class, args);	}}

  

2.写feignClient客户端j,使用feignClient注解的fallbackFactory方法

@FeignClient(name="spring-boot-user", fallbackFactory=HystrixClientFallbackFactory.class)public interface UserFeignClient {	// 两个坑:1. @GetMapping不支持   2. @PathVariable得设置value	@RequestMapping(value="/simple/{id}", method=RequestMethod.GET)	public User findById(@PathVariable("id") Long id);	}

  

3.写HystrixClientFallbackFactory类,和HystrixClientWithFallbackFactory类

HystrixClientWithFallbackFactory类继承UserFeignClient类

public interface HystrixClientWithFallbackFactory extends UserFeignClient {}

  

HystrixClientFallbackFactory实现FallbackFactory类,并使用内部匿名方法类,继续UserFeignClient

@Componentpublic class HystrixClientFallbackFactory implements FallbackFactory
{ @Override public UserFeignClient create(Throwable arg0) { // TODO Auto-generated method stub return new HystrixClientWithFallbackFactory() { @Override public User findById(Long id) { // TODO Auto-generated method stub User user = new User(); user.setId(-1L); return user; } }; }}

  

4controller调用UserFeignClient接口

@RestControllerpublic class MovieController {	@Autowired	private UserFeignClient userFeignClient;		@GetMapping("/movie/{id}")	public User findById(@PathVariable("id") Long id) {		return this.userFeignClient.findById(id);	}	}

  

5调用

当开启spring-boot-user方法,返回数据

当关闭spring-boot-user服务时

 

转载地址:http://viupl.baihongyu.com/

你可能感兴趣的文章
fastJson结合Nutz.Mapl的进阶应用
查看>>
使用react心得
查看>>
大一新生,你为何逃课?
查看>>
OSC源创会往期图文回顾链接地址收藏
查看>>
快节奏的多人游戏同步 - 示例代码和在线演示
查看>>
【分享】Java的几个重要词语
查看>>
symfony2的配置和welcome界面问题汇总
查看>>
选IDC房时,用脚本截取丢失包和rtt的值作比对
查看>>
TCP Wrappers
查看>>
mina
查看>>
kindle
查看>>
C# MoreLinq 扩展安装
查看>>
遍历查找指定文件
查看>>
域名年龄-SEO搜索引擎优化
查看>>
Qunee for HTML5 V2.5新版本发布
查看>>
<context-param>与<init-param>的区别与作用
查看>>
php中mkdir()函数的权限问题
查看>>
奇特的约会
查看>>
radio根据name 获取选中值及判断是否被选中
查看>>
LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)
查看>>