之前介绍的是处理RestTemplate方式的服务降级,现在要处理feign方式的了。
主要涉及到的原始代码order服务:https://github.com/hmilyos/springCloud-order.git moreBase分支
product服务:https://github.com/hmilyos/springCloud-product.git moreBase分支
其他eureka、api-gateway、配置中心config的是整个微服务的基础,肯定是要有的,不清楚的可以看我以前的文章。
代码实现
目标:order服务用feign调用product的接口,product未启动,从而实现服务降级。
在多模块当中,feign的调用是写被调用方的,例如order要请求product服务,实际上是feign的代码是写在product项目里面,然后通过打jar方式,在order服务中引入product打出来的jar,从而实现调用。
要实现product的服务降级,首先要在product里面编写,如下所示,ProductClientFallback里面就是降级处理逻辑
接着使用:mvn -Dmaven.test.skip=true -U clean install 命令把这个product的jar包打出来,如下所示,打包到我本地的maven仓库里面
product打包成功接着修改order的配置文件,启用feign-hystrix
接着在order的启动类中配置包扫描,因为product的服务降级处理,实际上是要运行在order项目里面的,所以这里要配置扫描到刚才的product的jar里面的服务降级处理,我这里为了方便,扫描的范围就设置得很广。
如此,编程就完了,启动order项目,product不启动,发起下单create请求,发现运行到调用product服务的代码,得到的结果是之前在product里面写的服务降级处理逻辑的结果,服务降级成功。
启动order项目,product也启动,发起下单create请求,这时候服务是正常的,下单成功
feign-hystrix的使用就是这么简单。
本小节的order代码:https://github.com/hmilyos/springCloud-order.git hystrixFeign分支
本小节的product代码:https://github.com/hmilyos/springCloud-product.git hystrixFeign分支
网友评论