springcloud微服务(二十) - Hystrix全局服务降级DefaultProperties
程序员文章站
2024-03-20 22:19:22
...
一、存在的问题
在前面的章节中,我们可以看到
1.每个业务方法都需要一个fallback方法,代码会急剧的膨胀
2.业务方法和fallback混杂在一起
二、解决方案
全局服务降级@DefaultProperties(defaultFallback=" 全局异常处理回退方法")
除了个别重要核心业务有专属的fallback方法,其他普通的业务方法可以通过@DefaultProperties(defaultFallback=" ") 跳转到统一的fallback方法。通用的和独享的各自分开,避免了代码膨胀,合理减少了代码量。
三、全局服务降级的实现
3.1 类上加注解@DefaultProperties(defaultFallback="全局异常处理回退方法 ")
3.2 业务方法加注解@HystrixCommand()
3.3 全局异常处理回退方法
@RestController
@DefaultProperties(defaultFallback = "payment_global_fallback_method")
public class HystrixOrderController {
@Autowired
private HystrixPaymentService hystrixPaymentService;
@GetMapping("/consumer/payment/info/ok/{id}")
public String paymentInfo_ok(@PathVariable("id") Integer id)
{
return hystrixPaymentService.paymentInfo_ok(id);
}
//模拟业务流程长,耗时长
@GetMapping("/consumer/payment/info/timeout/{id}")
/*@HystrixCommand(fallbackMethod = "paymentInfo_timeoutFallback",commandProperties = {
@HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="6000")
})*/
/*@HystrixCommand不写具体方法名称,就使用@DefaultProperties(defaultFallback = "payment_global_fallback_method")的全局的,commandProperties依然可以写满足条件
*/
@HystrixCommand(commandProperties = {@HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="3000")})
public String paymentInfo_timeout(@PathVariable("id") Integer id)
{
return hystrixPaymentService.paymentInfo_timeout(id);
}
public String paymentInfo_timeoutFallback(Integer id)
{
return "消费端80,支付系统异常,请稍后再试";
}
public String payment_global_fallback_method()
{
return "全局的异常处理";
}
}
上一篇: 由浅入深讲解动态类函数指针
下一篇: hystrix的服务降级
推荐阅读
-
SpringCloud微服务之实现Hystrix熔断、降级
-
springcloud——hystrix服务消费者方服务降级
-
springcloud微服务(二十) - Hystrix全局服务降级DefaultProperties
-
Kite的学习历程SpringCloud之Hystrix服务降级客户端通配服务降级
-
springcloud使用Hystrix进行微服务降级管理
-
详解springcloud 基于feign的服务接口的统一hystrix降级处理
-
详解springcloud 基于feign的服务接口的统一hystrix降级处理
-
springcloud使用Hystrix进行微服务降级管理
-
SpringCloud之Hystrix【服务降级、服务熔断、服务限流】
-
SpringCloud笔记四:互联网架构服务降级熔断Hystrix