Sentinel注解方式定义资源
Posted java1234_小锋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sentinel注解方式定义资源相关的知识,希望对你有一定的参考价值。
Sentinel 支持通过 @SentinelResource
注解定义资源并配置 blockHandler
和 fallback
函数来进行限流之后的处理。
第一步:引入@SentinelResource
注解依赖支持
Sentinel 提供了 @SentinelResource
注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException
等。使用 Sentinel Annotation AspectJ Extension 的时候需要引入以下依赖:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
<version>1.8.0</version>
</dependency>
第二步:创建AspectJ 配置类
Spring Cloud Alibaba
若您是通过 Spring Cloud Alibaba 接入的 Sentinel,则无需额外进行配置即可使用 @SentinelResource
注解。
Spring AOP
若您的应用使用了 Spring AOP(无论是 Spring Boot 还是传统 Spring 应用),您需要通过配置的方式将 SentinelResourceAspect
注册为一个 Spring Bean:
@Configuration
public class SentinelAspectConfiguration {
@Bean
public SentinelResourceAspect sentinelResourceAspect() {
return new SentinelResourceAspect();
}
}
第三步:新建Controller测试方法
/**
* 注解方式定义资源
* @SentinelResource value 资源名称
* @SentinelResource blockHandler 调用被限流/降级/系统保护的时候调用的方法
* @return
*/
@SentinelResource(value = "helloWorld3",blockHandler = "blockHandlerForHelloWorld3")
@RequestMapping("helloWorld3")
public String helloWorld3(){
return "Sentinel 大爷你好!by 注解方式@SentinelResource"+System.currentTimeMillis();
}
/**
* 原方法调用被限流/降级/系统保护的时候调用
* @param ex
* @return
*/
public String blockHandlerForHelloWorld3(BlockException ex) {
ex.printStackTrace();
return "系统繁忙,请稍后!";
}
第四步:Sentinel控制台新增流控规则
第五步:测试
浏览器请求:http://localhost/helloWorld3
正常访问:
频繁访问:
控制台异常打印:
微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。
以上是关于Sentinel注解方式定义资源的主要内容,如果未能解决你的问题,请参考以下文章