日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Hystrix降级逻辑中如何获取触发的异常

發(fā)布時(shí)間:2025/5/22 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hystrix降级逻辑中如何获取触发的异常 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

注解方式

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

@HystrixCommand(fallbackMethod = "fallback") User getUserById(String id) {throw new RuntimeException("getUserById command failed"); }User fallback(String id, Throwable throwable) {return new User("def", "def"); }

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

繼承方式

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

public static class UserCommand extends HystrixCommand<User> {protected UserCommand() {super(HystrixCommandGroupKey.Factory.asKey("UserCommand"));}@Overrideprotected User run() throws Exception {throw new RuntimeException("getUserById command failed");}@Overrideprotected User getFallback() {System.out.println(getFailedExecutionException().getMessage());return new User("def", "def");}}

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

總結(jié)

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

以下專題教程也許您會(huì)有興趣

  • Spring Boot基礎(chǔ)教程
  • Spring Cloud基礎(chǔ)教程

總結(jié)

以上是生活随笔為你收集整理的Hystrix降级逻辑中如何获取触发的异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。