springcloud微服务(二十) - Hystrix全局服务降级DefaultProperties

一、存在的问题

在前面的章节中,我们可以看到

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 "全局的异常处理";
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值