Spring Cloud Hystrix異常處理方法詳解
這篇文章主要介紹了Spring Cloud Hystrix異常處理方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
在調(diào)用服務(wù)執(zhí)行HsytrixCommand實現(xiàn)的run()方法拋出異常時,除HystrixBadRequestException之外,其他異常都會認(rèn)為是Hystrix命令執(zhí)行失敗并觸發(fā)服務(wù)降級處理邏輯.
異常處理
當(dāng)Hystrix命令因為異常(除了HystrixBadRequestException異常)進(jìn)入服務(wù)降級邏輯之后,往往需要對不同的異常做針對處理,那么就要捕獲異常。對于使用@HystrixCommand注解只需要在降級函數(shù)中增加Throwable e對象的定義
/**
* HystrixBadRequestException:
* 與由HystrixCommand拋出的所有其他異常不同,這不會觸發(fā)回退,也不會對失敗度量進(jìn)行計數(shù),因此不會觸發(fā)斷路器。
* @return
*/
@HystrixCommand(fallbackMethod="helloBackMethodFirst",ignoreExceptions=HystrixBadRequestException.class)
public String helloService() {
logger.info("start invoke service");
//URI需要使用虛擬主機(jī)名(即服務(wù)名稱,而不是主機(jī)名)
//return restTemplate.getForEntity("http://service-provide/hello", String.class).getBody();
throw new RuntimeException("consumer exception");
}
/**
* 通用降級函數(shù)
* @return
*/
@HystrixCommand(fallbackMethod="helloBackMethodSecond")
public String helloBackMethodFirst(Throwable e){
/*
* 一些異常判斷
* if(e instanceof CheckEception){
* }
* if(e instanceof IllegalStateException){
* }
*/
//此處可能是另外一個網(wǎng)絡(luò)請求,所以也可能出現(xiàn)錯誤
return "error1:"+e.getMessage();
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring Cloud Hystrix線程池不足的解決方法
- SpringCloud斷路器Hystrix原理及用法解析
- SpringCloud項目集成Feign、Hystrix過程解析
- SpringCloud之熔斷監(jiān)控Hystrix Dashboard的實現(xiàn)
- SpringCloud之熔斷器Hystrix的實現(xiàn)
- SpringCloud Hystrix-Dashboard儀表盤的實現(xiàn)
- SpringCloud微服務(wù)之Hystrix組件實現(xiàn)服務(wù)熔斷的方法
- Spring Cloud 的 Hystrix.功能及實踐詳解
- Springcloud hystrix服務(wù)熔斷和dashboard如何實現(xiàn)
相關(guān)文章
Java IText異常NoClassDefFoundError: org/bouncycastle
在使用Java進(jìn)行PDF文檔操作時,iText是一個非常強(qiáng)大的庫,然而,在實際開發(fā)過程中,可能會遇到一些異常情況,其中之一就是??NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable??,本文將探討這個錯誤的原因及其解決方案,需要的朋友可以參考下2025-02-02
SpringBoot HttpMessageConverter消息轉(zhuǎn)換器的使用詳解
在整個數(shù)據(jù)流轉(zhuǎn)過程中,前端的請求報文轉(zhuǎn)化為Java對象,Java對象轉(zhuǎn)化為響應(yīng)報文,這里就用到了消息轉(zhuǎn)換器HttpMessageConverter2022-06-06
SpringBoot異常: nested exception is java.lang.NoClassDefFoundE
這篇文章主要介紹了SpringBoot異常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解決方案,說明了錯誤原因和解決方案,需要的朋友可以參考下2021-06-06
關(guān)于java自定義線程池的原理與實現(xiàn)
本文介紹了如何自定義線程池和阻塞隊列,包括阻塞隊列的實現(xiàn)方法,線程池的構(gòu)建以及拒絕策略的應(yīng)用,詳細(xì)闡述了線程池中任務(wù)的提交和執(zhí)行流程,以及如何處理任務(wù)超出隊列容量的情況2022-04-04
Spring Data JPA 關(guān)鍵字Exists的用法說明
這篇文章主要介紹了Spring Data JPA 關(guān)鍵字Exists的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

