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

本文共 2902 字,大约阅读时间需要 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服务时

 

转载于:https://www.cnblogs.com/achengmu/p/9911808.html

你可能感兴趣的文章
flume+elasticsearch+kibana遇到的坑
查看>>
【MM系列】在SAP里查看数据的方法
查看>>
C#——winform
查看>>
CSS3 transform制作的漂亮的滚动式导航
查看>>
《小强升职记——时间管理故事书》读书笔记
查看>>
Alpha 冲刺(3/10)
查看>>
Kaldi中的Chain模型
查看>>
spring中的ResourceBundleMessageSource使用和测试示例
查看>>
css规范 - bem
查看>>
电梯调度程序的UI设计
查看>>
转自 zera php中extends和implements的区别
查看>>
Array.of使用实例
查看>>
【Luogu】P2498拯救小云公主(spfa)
查看>>
如何获取网站icon
查看>>
几种排序写法
查看>>
java 多线程的应用场景
查看>>
dell support
查看>>
转:Maven项目编译后classes文件中没有dao的xml文件以及没有resources中的配置文件的问题解决...
查看>>
MTK android 设置里 "关于手机" 信息参数修改
查看>>
单变量微积分笔记6——线性近似和二阶近似
查看>>