spring cloud優雅的處理feign熔斷異常
導讀 | 在微服務中,我們透過feign來呼叫其他微服務的功能,我們可以新增熔斷來避免雪崩,因為我們熔斷的目的是為了快速返回給呼叫方,避免雪崩;實際上,我們一般不寫熔斷回撥方法,直接捕獲異常,返回適當異常資訊給使用者即可。 |
1、實現
1-1、配置
增加以下配置,feign開啟熔斷後,遠端服務的異常會被消化,而走熔斷方法;所以,需要以下配置配置來關閉熔斷,好統一捕獲服務異常;
# feign配置 feign.hystrix.enabled=false
1-2、捕獲異常並處理
捕獲feign異常有兩種方法,一種是在呼叫處 try...catch...;一種是統一捕獲處理,推薦後者;
統一捕獲:增加一個配置類,實現ErrorDecoder介面,在裡面就可以捕獲feign異常並上拋自定義異常了;
然後,在我們之前寫的統一異常處理的就可以捕獲和處理這個異常,並返回友好的資訊給使用者了;
@Configuration public class FeignErrorDecoder implements ErrorDecoder { public static final Logger log = LoggerFactory.getLogger(FeignErrorDecoder.class); @Override public Exception decode(String methodKey, Response response) { try { // 獲取異常資訊 String message = Util.toString(response.body().asReader()); JSONObject jsonObject = JSONObject.parseObject(message); log.error(message); //記錄日誌 //直接上拋自定義異常 // return new BizException(jsonObject.getInteger("code"), jsonObject.getString("msg")); return new BizException(jsonObject.getInteger("resultCode"), jsonObject.getString("resultMsg")); } catch (Exception ex) { //1、呼叫引數異常 if (response.status() >= 400 && response.status() <= 500) { return new BizException(ResultCode.INVALID_REQUEST); } else { return new BizException(ResultCode.INTERNAL_SERVER_ERROR); } } } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2762742/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 優雅的處理Spring Boot異常資訊Spring Boot
- Spring Boot優雅地處理404異常Spring Boot
- Spring Cloud Feign 熔斷機制填坑SpringCloud
- 如何優雅的處理異常
- 如何優雅處理前端異常?前端
- Egg優雅的實現異常處理
- SpringBoot優雅的全域性異常處理Spring Boot
- [譯]Go如何優雅的處理異常Go
- 如何優雅地處理前端異常?前端
- Spring Cloud Gateway的全域性異常處理SpringCloudGateway
- java優雅的處理程式中的異常Java
- 教你如何優雅處理Golang中的異常Golang
- Spring Cloud Gateway-自定義異常處理SpringCloudGateway
- Spring Cloud中Hystrix、Ribbon及Feign的熔斷關係是什麼?SpringCloud
- SpringBoot進行優雅的全域性異常處理Spring Boot
- Spring Cloud Gateway自定義異常處理Exception HandlerSpringCloudGatewayException
- Spring cloud(4)-熔斷(Hystrix)SpringCloud
- 【Spring Cloud】Feign呼叫異常觸發降級後如何捕獲異常SpringCloud
- Spring Boot 異常處理Spring Boot
- 優雅地處理異常真是一門學問啊!
- SpringBoot介面 - 如何優雅的寫Controller並統一異常處理?Spring BootController
- Spring系列(七) Spring MVC 異常處理SpringMVC
- spring中的統一異常處理Spring
- spring boot 統一異常處理Spring Boot
- 深入理解Spring異常處理Spring
- Spring Cloud Alibaba:Sentinel實現熔斷與限流SpringCloud
- Spring Cloud實戰系列(四) - 熔斷器HystrixSpringCloud
- 異常的處理
- 異常-throws的方式處理異常
- 異常篇——異常處理
- Spring Boot 2 Webflux的全域性異常處理Spring BootWebUX
- async/await 如何優美的處理異常?AI
- Spring Cloud中,Feign常見問題總結SpringCloud
- 9.Spring Cloud Alibaba Sentinel流控熔斷元件SpringCloud元件
- 異常處理
- 29.Spring Boot中異常處理與REST格式處理Spring BootREST
- Spring @ControllerAdvice+@ExceptionHandler統一異常處理SpringControllerException
- 如何優雅的設計Java異常Java