当前位置:网站首页>OpenFeign实现降级
OpenFeign实现降级
2022-07-30 03:25:00 【Leon_Jinhai_Sun】
Hystrix也可以配合Feign进行降级,我们可以对应接口中定义的远程调用单独进行降级操作。
比如我们还是以用户服务挂掉为例,那么这个时候肯定是会远程调用失败的,也就是说我们的Controller中的方法在执行过程中会直接抛出异常,进而被Hystrix监控到并进行服务降级。
而实际上导致方法执行异常的根源就是远程调用失败,所以我们换个思路,既然用户服务调用失败,那么我就给这个远程调用添加一个替代方案,如果此远程调用失败,那么就直接上替代方案。那么怎么实现替代方案呢?我们知道Feign都是以接口的形式来声明远程调用,那么既然远程调用已经失效,我们就自行对其进行实现,创建一个实现类,对原有的接口方法进行替代方案实现:
@Component //注意,需要将其注册为Bean,Feign才能自动注入
public class UserFallbackClient implements UserClient{
@Override
public User getUserById(int uid) { //这里我们自行对其进行实现,并返回我们的替代方案
User user = new User();
user.setName("我是替代方案");
return user;
}
}实现完成后,我们只需要在原有的接口中指定失败替代实现即可:
//fallback参数指定为我们刚刚编写的实现类
@FeignClient(value = "userservice", fallback = UserFallbackClient.class)
public interface UserClient {
@RequestMapping("/user/{uid}")
User getUserById(@PathVariable("uid") int uid);
}现在去掉BorrowController的@HystrixCommand注解和备选方法:
@RestController
public class BorrowController {
@Resource
BorrowService service;
@RequestMapping("/borrow/{uid}")
UserBorrowDetail findUserBorrows(@PathVariable("uid") int uid){
return service.getUserBorrowDetailByUid(uid);
}
}最后我们在配置文件中开启熔断支持:
feign:
circuitbreaker:
enabled: true启动服务,调用接口试试看:


可以看到,现在已经采用我们的替代方案作为结果。
边栏推荐
- Software testing interview questions and answer analysis, the strongest version in 2022
- 复星医药募资44.84亿:高毅资产认购20亿 成第三大股东
- Open address method hash implementation - secondary detection method
- vscode 调试和远程
- golang的channel实现原理
- One book 1922 - table tennis
- 联邦学习综述(一)——联邦学习的背景、定义及价值
- 开放地址法哈希实现——二次探测法
- uni-app实现跨端开发手机蓝牙接收和发送数据
- Testers, what else do you need to know besides testing?
猜你喜欢
随机推荐
力扣(LeetCode)210. 课程表 II(2022.07.29)
Leetcode.24 两两交换链表中的节点(递归)
Three years of experience will only be a little bit (functional testing), and you may not even be able to find a job after resigning.
MyCat中对分库分表、ER表、全局表、分片规则、全局序列等的实现与基本使用操作
First acquaintance with the web
HCIP OSPF
Open address method hash implementation - linear detection method
单片机没有随机数发生器如何生成随机数——2022.07.26
[3D检测系列-PointRCNN]复现PointRCNN代码,并实现PointRCNN3D目标检测可视化,包含预训练权重下载链接(从0开始以及各种报错的解决方法)
淘宝H5接口获取app数据6.0格式
自定义 View 实现汉字笔顺动画
[Andrioid开发] Splash界面/用户协议与隐私政策弹窗/界面开发
JUC(八):synchronized小练习
WPF 学习笔记《WPF布局基础》
乖宝宠物IPO过会:年营收25.75亿 KKR与君联是股东
leetcode 5 questions a day-Day01
判断Object是否依赖于名叫“XX“的资产
SQL 入门之第一讲——MySQL 8.0.29安装教程(windows 64位)
JUC(四):简记线程的五/六种状态
Drools(7):WorkBench









