springcloud学习笔记

参考 周立 所著《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



你可能感兴趣的:(springcloud学习笔记)