日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Hystrix降級邏輯中如何獲取觸發(fā)的異常

通過之前Spring Cloud系列教程中的《Spring Cloud構(gòu)建微服務(wù)架構(gòu):服務(wù)容錯保護(Hystrix服務(wù)降級)》一文,我們已經(jīng)知道如何通過Hystrix來保護自己的服務(wù)不被外部依賴方拖垮的情況。但是實際使用過程中經(jīng)常碰到開發(fā)反應(yīng)“莫名”觸發(fā)了降級邏輯的情況。為了更精準的定位觸發(fā)原因,或是在降級邏輯中需要根據(jù)不同的異常做不同的處理時,在降級方法中,我們希望可以獲取到主邏輯中拋出的異常信息。接下來就來介紹一下Hystrix兩種不同實現(xiàn)方式中如何在降級邏輯中獲取異常信息的方法。

目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、略陽網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

注解方式

先介紹一下用注解方式定義的Hystrix命令是如何在降級邏輯中獲取異常的,實現(xiàn)非常簡單,先看下面的例子:

 
 
 
  1. @HystrixCommand(fallbackMethod = "fallback") 
  2. User getUserById(String id) { 
  3.     throw new RuntimeException("getUserById command failed"); 
  4.  
  5. User fallback(String id, Throwable throwable) { 
  6.     return new User("def", "def"); 

這里定義了一個主邏輯函數(shù)getUserById,主邏輯中會主動拋出一個異常,從而觸發(fā)該主邏輯的降級函數(shù)fallback。重點看fallback函數(shù)中的***一個傳參Throwable throwable。通過這樣的簡單定義,開發(fā)人員就可以很方便的獲取觸發(fā)降級邏輯的異常信息,用作日志記錄或者其它復(fù)雜的業(yè)務(wù)邏輯了。

繼承方式

在繼承方式中要獲取觸發(fā)異常也非常簡單,具體如下:

 
 
 
  1. public static class UserCommand extends HystrixCommand { 
  2.  
  3.     protected UserCommand() { 
  4.         super(HystrixCommandGroupKey.Factory.asKey("UserCommand")); 
  5.     } 
  6.  
  7.     @Override 
  8.     protected User run() throws Exception { 
  9.         throw new RuntimeException("getUserById command failed"); 
  10.     } 
  11.  
  12.     @Override 
  13.     protected User getFallback() { 
  14.         System.out.println(getFailedExecutionException().getMessage()); 
  15.         return new User("def", "def"); 
  16.     } 
  17.  

上面的實現(xiàn)同上一節(jié)注解方式的實現(xiàn)一樣,在使用繼承方式的時候通過getFailedExecutionException方法就可以獲取到觸發(fā)降級的異常信息了。

總結(jié)

我們在實際使用Hystrix的時候,有時候一些業(yè)務(wù)異?;蛘邇?nèi)部RPC由服務(wù)提供方拋出的異常在消費方?jīng)]能考慮周到,會觸發(fā)一些意料之外的降級。所以在降級邏輯中,建議每一段都加入觸發(fā)異常的日志記錄,以方便定位問題原因。

【本文為專欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請通過聯(lián)系作者獲取授權(quán)】


網(wǎng)頁標題:Hystrix降級邏輯中如何獲取觸發(fā)的異常
當前地址:http://m.5511xx.com/article/cogsjci.html