feign 中已经集成了 hystrix 熔断机制,我们可以直接使用。
feign 中的 hystrix 使用,我们需要注意一下几点:
-
依赖导入
-
配置启用
-
callBack 编码
依赖导入
在服务消费端的 feign 依赖包中,如果没有 hystrix 依赖,则我们需要加入 hystrix 依赖:
<!-- hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
如果 feign 包中已经有 hystrix ,则不用导。
后来发现,我们需要的是 feigh-hystrix 包,不需要上面的包
配置启用
我们使用的是 feign 下 hystrix ,所以对应的配置项也是在 feign 下的。
具体的配置如下:
# feign配置
feign:
hystrix:
# 在feign中开启hystrix功能,默认情况下feign不开启hystrix功能
enabled: true
callBack 编码
在 feign 的 hystrix 中,当消费端消费远程服务的时候,如果远程服务挂掉了,消费端会继而调用 对于的 callBack 服务。
callBack 服务中实现了对远程服务无法调通时的操作,例如一些友好性的提示等。
实现 callBack ,需要注意一下几点:
-
callBack 服务需要实现对应的 Feign 服务接口;
-
使用 @Component 注解管理服务。
具体的实现如下:
package cn.com.git.order.service.hystrix;
import cn.com.git.order.service.feign.GoodsServiceFeign;
import org.springframework.stereotype.Component;
/**
* 商品服务熔断回调
*/
@Component
public class GoodsServiceCallBack implements GoodsServiceFeign {
@Override
public String goodsDetail(int code) {
System.out.println("----------------- 商品服务 熔断 ------------------");
return "商品服务调用异常";
}
}
我们再次调用之前的 order 模块中的服务,测试 Feign 调用:
服务重启后,还是能正常调用。