1、大家都知道,如果使用@HystixCommand注解的原始方式对服务降级,每个业务方法对应一个兜底的方法,代码膨胀,和业务逻辑代码混在一起,很混乱
2、为了避免上述问题,所以我们需要统一和自定义的分开方式降级,需要全局降级
3、使用feign接口系列,@DefaultProperties(defaultFallback = ""),通用和独享的降级方法分开,避免代码膨胀合理减少了代码量,用法如下:
第一步:
//下面是全局 fallback 方法
public CommonResult payment_Global_FallbackMethod(){
return success("Global异常处理信息,请稍后再试!");
}
第二步:
加全局降级类注释代码
@DefaultProperties(defaultFallback = "payment_Global_FallbackMethod")
第三步:
方法加上@HystrixCommand注解,如果方法注解指明了fallbackMethod就用自定的降级方法,否则就走全局降级方法
@GetMapping("/payment/hystrix/timeout/{id}")
// @HystrixCommand(fallbackMethod = "paymentInfo_TimeOutFallbackMethod",commandProperties = {
// @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "1500")
// })
@HystrixCommand
public CommonResult paymentInfo_TimeOut(@PathVariable("id") Integer id){
int num = 10/0;
return paymentHystrixService.paymentInfo_TimeOut(id);
}
网友评论