使用 @SentinelResource 注解
- 引入依赖
<!--使用sentinel注解方式进行流控-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
</dependency>
- 在配置类或者启动类上配置 Bean
@Bean
public SentinelResourceAspect sentinelResourceAspect(){
return new SentinelResourceAspect();
}
- 在 controller 对请求进行限流
/*
使用注解的方式,进行流控设置
*/
@GetMapping("/ann")
@SentinelResource(value = "/order/ann", blockHandler = "exceptionHandler", fallback = "helloFallback")
public User testAnnotation(){
int a = 1/ 0;
return new User("kasha!");
}
在它下边跟上相应方法
public User exceptionHandler(BlockException be){
be.printStackTrace();
return new User("被流控了");
}
public User helloFallback(){
return new User("helloFallback");
}
- 使用注解也要进行规则配置,然后加载规则
/**
* 生命周期方法,spring的初始化方法
* 定制sentinel的流控规则
*/
@PostConstruct
private static void initFlowQpsRule(){
// 流控规则
List<FlowRule> rules = new ArrayList<>();
/*
使用sentinelResource注解也要定义规则
*/
FlowRule rule2 = new FlowRule();
rule2.setResource("/order/ann");
rule2.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule2.setCount(1);
rules.add(rule2);
// 加载配置好的规则
FlowRuleManager.loadRules(rules);
}
- 以上就是基本步骤。