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

