Spring Cloud Alibaba入门实践(十八)-了解@SentinelResource
之前的几篇博客,我们采用了@SentinelResource来定义资源点,然后通过Sentinel控制台对资源设置规则。
查看下@SentinelResource注解中的信息,如下:
一一解释下以上几个属性的作用:
属性 | 作用 |
---|---|
value | 资源名称 |
entryType | entry类型,标记流量的方向,取值IN/OUT,默认是OUT |
resourceType | 资源的分类(类型) |
blockHandler | 处理BlockException的函数名称,函数要求:1. 必须是 public 2.返回类型参数与原方法一致 3. 默认需和原方法在同一个类中。若希望使用其他类的函数,可配置blockHandlerClass ,并指定blockHandlerClass里面的方法。 |
blockHandlerClass | 存放blockHandler的类,对应的处理函数必须static修饰。 |
fallback | 用于在抛出异常的时候提供fallback处理逻辑。fallback函数可以针对所 有类型的异常(除了exceptionsToIgnore里面排除掉的异常类型)进 行处理。函数要求: 1. 返回类型与原方法一致 2. 参数类型需要和原方法相匹配 3. 默认需和原方法在同一个类中。若希望使用其他类的函数,可配置 fallbackClass ,并指定fallbackClass里面的方法。 |
defaultFallback | 用于通用的fallback逻辑。默认fallback函数可以针对所有类型的异常进行处理。若同时配置了fallback和defaultFallback,以fallback为准。函数要求:1. 返回类型与原方法一致 2. 方法参数列表为空,或者有一个 Throwable 类型的参数。3. 默认需要和原方法在同一个类中。若希望使用其他类的函数,可配置fallbackClass ,并指定 fallbackClass 里面的方法。 |
fallbackClass | 存放fallback的类。对应的处理函数必须static修饰。 |
exceptionsToIgnore | 指定排除掉哪些异常。排除的异常不会计入异常统计,也不会进入fallback逻辑,而是原样抛出。 |
exceptionsToTrace | 需要trace的异常 |
了解了以上几个属性的意义后,个人觉得把降级方法和业务方法分离开来,会比较符合开发规范。然后这里就不单独测试降级了,下篇博客直接把Feign和Sentinel做个整合,这才是日常用法。