当前位置:网站首页>【微服务|Sentinel】@SentinelResource详解
【微服务|Sentinel】@SentinelResource详解
2022-07-01 22:29:00 【步尔斯特】
之前我们写过的文章中提到,在热点参数限流处,我们只能使用@SentinelResource注解来定义资源,才能生效,那么这个注解到底还有何用处呢?
Sentinel 提供了 @SentinelResource 注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。
介绍
@SentinelResource 注解包含以下属性:
- value:资源名称,必需项(不能为空)
- entryType:entry 类型,可选项(默认为 EntryType.OUT)
- blockHandler / blockHandlerClass: blockHandler 对应处理 BlockException 的函数名称,可选项。blockHandler 函数访问范围需要是 public,返回类型需要与原方法相匹配,参数类型需要和原方法相匹配并且最后加一个额外的参数,类型为 BlockException。blockHandler 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 blockHandlerClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
- fallback:fallback 函数名称,可选项,用于在抛出异常的时候提供 fallback 处理逻辑。fallback 函数可以针对所有类型的异常(除了 exceptionsToIgnore 里面排除掉的异常类型)进行处理。fallback 函数签名和位置要求:
- 返回值类型必须与原函数返回值类型一致;
- 方法参数列表需要和原函数一致,或者可以额外多一个 Throwable 类型的参数用于接收对应的异常。
- fallback 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 fallbackClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
- defaultFallback(since 1.6.0):默认的 fallback 函数名称,可选项,通常用于通用的 fallback 逻辑(即可以用于很多服务或方法)。默认 fallback 函数可以针对所以类型的异常(除了 exceptionsToIgnore 里面排除掉的异常类型)进行处理。若同时配置了 fallback 和 defaultFallback,则只有 fallback 会生效。defaultFallback 函数签名要求:
- 返回值类型必须与原函数返回值类型一致;
- 方法参数列表需要为空,或者可以额外多一个 Throwable 类型的参数用于接收对应的异常。
- defaultFallback 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 fallbackClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
- exceptionsToIgnore(since 1.6.0):用于指定哪些异常被排除掉,不会计入异常统计中,也不会进入 fallback 逻辑中,而是会原样抛出。
特别地,若 blockHandler 和 fallback 都进行了配置,则被限流降级而抛出 BlockException 时只会进入 blockHandler 处理逻辑。若未配置 blockHandler、fallback 和 defaultFallback,则被限流降级时会将 BlockException 直接抛出。
案例
public class TestService {
// 对应的 `handleException` 函数需要位于 `ExceptionUtil` 类中,并且必须为 static 函数.
@SentinelResource(value = "test", blockHandler = "handleException", blockHandlerClass = {
ExceptionUtil.class})
public void test() {
System.out.println("Test");
}
// 原函数
@SentinelResource(value = "hello", blockHandler = "exceptionHandler", fallback = "helloFallback")
public String hello(long s) {
return String.format("Hello at %d", s);
}
// Fallback 函数,函数签名与原函数一致或加一个 Throwable 类型的参数.
public String helloFallback(long s) {
return String.format("Halooooo %d", s);
}
// Block 异常处理函数,参数最后多一个 BlockException,其余与原函数一致.
public String exceptionHandler(long s, BlockException ex) {
// Do some log here.
ex.printStackTrace();
return "Oops, error occurred at " + s;
}
}
边栏推荐
- The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received
- CKS CKA CKAD 将终端更改为远程桌面
- Some abilities can't be learned from work. Look at this article, more than 90% of peers
- Genicam gentl standard ver1.5 (4) Chapter 5 acquisition engine
- URL 介绍
- SAP intelligent robot process automation (IRPA) solution sharing
- vSphere+、vSAN+来了!VMware 混合云聚焦:原生、快速迁移、混合负载
- Réimpression de l'article csdn
- Turn -- the underlying debugging principle of GDB is so simple
- MySQL -- deduction of index storage model
猜你喜欢

AAAI22 | 结构标记和交互建模:用于图分类的“SLIM”网络

MySQL -- deduction of index storage model

Explain JMM in detail
![Compare the version number [double pointer to intercept the string you want]](/img/19/4f858ffdc1281d6b8b18a996467f10.png)
Compare the version number [double pointer to intercept the string you want]

Groups and ranges of regular series

14年本科毕业,3个月转行软件测试月薪13.5k,32的岁我终于找对了方向
![[MySQL] index classification](/img/73/fb9f28457b373ad35d2f6068387b47.png)
[MySQL] index classification

Kubernetes create service access pod

Turn -- go deep into Lua scripting language, so that you can thoroughly understand the debugging principle

转--拿来即用:分享一个检查内存泄漏的小工具
随机推荐
Multi picture alert ~ comparison of Huawei ECs and Alibaba cloud ECS
Congratulations on the release of friends' new book (send welfare)
Using emqx cloud to realize one machine one secret verification of IOT devices
Map container
转--拿来即用:分享一个检查内存泄漏的小工具
Treatment of insufficient space in the root partition of armbain system
Turn -- use setjmp and longjmp in C language to realize exception capture and collaboration
Mysql 5.7 实现 rank 排名
window安装wsl(二)
Unable to climb hill sort, directly insert sort
SAP intelligent robot process automation (IRPA) solution sharing
正则系列之组和范围(Groups and Ranges)
Use of locust
认识线程
Daily question brushing record (10)
Flynk SQL client uses comparison and is familiar with official documents
Pytorch nn. functional. Simple understanding and usage of unfold()
Genicam gentl standard ver1.5 (4) Chapter 5 acquisition engine
Jielizhi Bluetooth headset quality control and production skills [chapter]
Réimpression de l'article csdn