4.3 Feign使用Hystrix
由于Hystrix本身已经集成了Hystrix依赖,所以我们可以直接使用,而不用再去引入Hystrix。
-
准备工作(类似于Ribbon的操作):
①:依次启动Eureka、Discovery、Feign服务,然后访问Feign服务的地址,可以看到正常访问成功。
image ②:关闭Discovery服务,再次访问Feign服务的地址,这时由于无法访问提供者的服务,Feign的界面会报错:
image
注:如果仔细观察,会发现Ribbon和Feign的报错信息略微不同:
Ribbon需要引入Hystrix依赖,并且发生断路时,报错为服务器拒绝链接;
Feign自带Hystrix体系,发生断路时,报错为没有指定断路回调的方法属性。
image
-
使用Hystrix断路器: 由于Feign不用引入Hystrix依赖,所以直接在原有的Feign服务商进行一些基本修改。 ①:核心类BootFeignApplication不需要改变,修改接口ComputerClient,添加注解接口中映射的fallback函数:
image
②:主类ComputerController不需要改变,新增实现类ComputerClientHystrix:
image
注:实现类的类名和接口中的fallback函数的名称一致。
③:依次启动Eureka、Discovery、Feign服务,然后访问Feign服务的地址,可以看到正常访问成功。
关闭Discovery服务,再次访问Feign服务地址:http://localhost:8224/add。此时会报错:
image
网友评论