@SentinelResource使用

@SentinelResource使用

官网@SentinelResource的使用:注解支持 · alibaba/Sentinel Wiki (github.com)

@SentinelResource的介绍

@SentinelResource来源于Alibaba的Sentinel的注解支持,根据Sentinel官方文档的描述,Sentinel可以通过以下方式定义资源:

  • 方式一:主流框架的默认适配
  • 方式二:抛出异常的方式定义资源
  • 方式三:返回布尔值方式定义资源
  • 方式四:注解方式定义资源(@SentinelResource的来源)
  • 方式五:异步调用支持

@SentinelResource的参数

@SentinelResource的参数如下:

  • value:资源名称
  • entryType:entry 类型,可选项(默认为 EntryType.OUT),可选EntryType.OUTEntryType.IN
  • blockHandler/ blockHandlerClass:定位对应处理 BlockException 的函数名称blockHandler 函数访问范围需要是 public,返回类型需要与原方法相匹配,参数类型需要和原方法相匹配并且最后加一个额外的参数,类型为 BlockException
  • fallback / fallbackClass:fallback 函数名称,可选项,用于在抛出异常的时候提供 fallback 处理逻辑。
  • defaultFallback(since 1.6.0):默认的 fallback 函数名称,可选项
  • exceptionsToIgnore(since 1.6.0):用于指定哪些异常被排除掉,不会计入异常统计中,也不会进入 fallback 逻辑中,而是会原样抛出。

官方案例

// 原函数
@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;
}
posted @   鸭梨的药丸哥  阅读(38)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示