全局降级处理方式

本文介绍了如何在服务消费方实现全局服务降级,以减少代码耦合和繁琐的兜底方法配置。首先在Controller中编写全局降级逻辑,然后通过注解开启降级处理。接着,通过配置Feign和Hystrix实现接口级别的降级,定义一个FallBackService类来实现接口并提供降级方法。最后,测试降级效果,当服务提供方挂掉时,降级逻辑能够正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上面的降级策略,很明显造成了代码的杂乱,提升了耦合度,而且按照这样,每个方法都需要配置一个兜底方法,很繁琐。现在将降级处理方法(兜底方法)做一个全局的配置,设置共有的兜底方法和独享的兜底方法。
全局服务降级处理在服务消费方上面实现
(1)在消费方的controller里面编写全局降级逻辑的方法
// 全局降级处理方法
public String globalHandler(){
return “这是全局处理降级逻辑的方法…”;
}
(2)使用注解开启全局服务降级逻辑处理在这里插入图片描述
(3)启动测试
在这里插入图片描述
全局服务降级—服务降级方法的抽取
问题:跟业务逻辑混合,解决(解耦):
先将服务消费方关于降级处理的配置全部清除
(1)在yml配置文件开启Feign基于对Hystrix的支持
//用于服务降级 在注解@FeignClient 中添加 fallback 属性值
feign:
hystrix:
enabled: true # 在feign中开启 hystrix
(2)定义一个类实现Feign客户端接口
@Component
public class FallBackService implements OrderService {
@Override
public String paymentInfo_OK(Integer id) {
return “进行paymentInfo_OK方法降级处理…”;
}

@Override
public String paymentInfo_Timeout(Integer id) {
    return "进行paymentInfo_Timeout方法降级处理";
}

}
(3)修改Feign客户端接口
@FeignClient(value = “cloud-payment-service”,fallback = FallBackService.class)
public interface OrderService {

@GetMapping("/payment/hystrix/{id}")
public String paymentInfo_OK(@PathVariable("id")Integer id);

@GetMapping("/payment/hystrix/timeout/{id}")
public String paymentInfo_Timeout(@PathVariable("id")Integer id);

}
(4)测试
这次我们模拟服务提供方挂掉了,将8001服务停止
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值