一展箱、maven依賴
Sentinel 提供了@SentinelResource注解用于定義資源,并提供了AspectJ的擴(kuò)展用于自定義資源,處理BlockException等妖泄。
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
<version>x.y.z</version>
</dependency>
二骗灶、屬性
1、value:
資源名稱,必須項(xiàng)(唯一,不能為空)
2系草、entryType:
entry類型,可選項(xiàng)(默認(rèn)為EntryType.OUT),EntryType.IN 入口流量通熄、EntryType.OUT 出口流量
3、blockHandler/blockHandlerClass:
blockHandler對(duì)應(yīng)處理BlockException的函數(shù)名稱可選項(xiàng).blockHandler函數(shù)訪問(wèn)需要public,返回類型需要與原方法相匹配,參數(shù)類型需要和原方法相匹配并且最后加一個(gè)額外的參數(shù),類型為BlockException.blockHandler 函數(shù)默認(rèn)需要和原方法在同一個(gè)類中.若希望使用其他類的函數(shù),則可以指定blockHandlerClass為對(duì)應(yīng)的類的Class對(duì)象,注意對(duì)應(yīng)的函數(shù)必須為static函數(shù),否則無(wú)法解析.
4找都、fallback:
fallback函數(shù)名稱,可選項(xiàng),用于在拋出異常的時(shí)候提供fallback處理邏輯.fallback函數(shù)可以針對(duì)所有類型的異常(除掉exceptionsToIgnore里面排掉的異常類型)進(jìn)行處理.
fallback函數(shù)簽名和位置要求:
1)返回值類型必須與原函數(shù)返回值類型一致
2)方法參數(shù)列表需要和原函數(shù)一致,或者可以額外多一個(gè)Throwable類型的參數(shù)用于接收對(duì)應(yīng)的異常唇辨。
3)fallback函數(shù)默認(rèn)需要和原方法在同一個(gè)類中.若希望使用其他類的函數(shù),則可以指定fallbackClass為對(duì)應(yīng)的類的Class對(duì)象,注意對(duì)應(yīng)的函數(shù)必須為static函數(shù).
5、defaultFallback(since 1.6.0):
默認(rèn)的fallback函數(shù)名稱,可選項(xiàng),通常用于通用的fallback邏輯(即可以用于很多服務(wù)或方法).默認(rèn)fallback函數(shù)可以針對(duì)所有類型的異常(除了exceptionsToIgnore里面排除掉的異常類型)進(jìn)行處理.若同時(shí)配置fallback和defaultFallback,則只有fallback會(huì)生效.
defaultFallback函數(shù)簽名要求:
1)返回值類型必須與原函數(shù)返回值類型一致
2)方法參數(shù)列表需要為空,或者可以額外多一個(gè)Throwable類型的參數(shù)用于接收對(duì)應(yīng)的異常.
3)defaultFallback函數(shù)默認(rèn)需要和原方法在同一個(gè)類中.若希望使用其他類函數(shù),則可以指定fallbackClass為對(duì)應(yīng)的類Class對(duì)象,注意對(duì)應(yīng)的函數(shù)必須為static函數(shù).
6能耻、exceptionsToIgnore(since 1.6.0) :
用于指定那些異常被排除,不會(huì)計(jì)入異常統(tǒng)計(jì)中,也不會(huì)進(jìn)入到fallback邏輯中,而是原樣拋出.
注:1.6.0 之前的版本 fallback 函數(shù)只針對(duì)降級(jí)異常(DegradeException)進(jìn)行處理赏枚,不能針對(duì)業(yè)務(wù)異常進(jìn)行處理亡驰。
特別的,若blockHandler和fallback都進(jìn)行了配置,則被限流降級(jí)而拋出BlockException時(shí)只會(huì)進(jìn)入blockHandler處理邏輯.若未配置blockHandler/fallback和defaultFallback,則被限流降級(jí)時(shí)會(huì)將BlockException直接拋出。