springcloud学习笔记
2020-03-19 本文已影响0人
WK_99c5
参考 周立 所著《SpringCloud与Docker微服务架构实战-完整版》
1、Feign使用Hystrix添加回退
Feign已经默认集成了Hystrix,如果使用回退方法的话,可以为用Feign注解的接口增加一个实现类,然后对应实现其方法,并在接口的@FeignClient注解上,添加上fallback属性,值为实现类.class。
如下在Controller中调用Feign接口UserFeignClient
如下,接口是UserFeignClient,上面注解@FeignClient里的name为调用的远程服务,fallback的值为FeignClientFallback.class,即为接口UserFeignClient的实现类的名字。
如下为FeignClientFallback,实现了UserFeignClient接口。里面实现了findById方法。
当我现在调用UserFeignClient的findById方法时,会出现如下情况,证明已经实现了回退方法。
2、Hystrix监控
在接口方法上的@FeignClient的注解里添加fallbackFactory属性,并添加对应的值,该值为接口实现类,如下图
实现类中要实现FallbackFactory,并实现create方法,我们可以在create方法中返回接口的实现方法,并创建返回对象,打印出相应的日志
其中有个问题是throwable可能为空,这是Feign之前版本的一个bug,在9.4.0之后已经解决。如我本地,停用了microservice-provider-user服务之后,在浏览器中访问能返回对应的对象,但是log日志中没有对应的reason