springcloud-Sentinel整合
springcloud-Sentinel整合配置
官方地址教程
文章目录
一、导入jar包
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.2</version>
</dependency>
<!--注解支持-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
<version>1.8.2</version>
</dependency>
二、配置SentinelResourceAspect
SentinelResourceAspect 注册为一个 Spring Bean
代码如下(示例):
@Configuration
public class SentinelAspectConfiguration {
@Bean
public SentinelResourceAspect sentinelResourceAspect() {
return new SentinelResourceAspect();
}
}
三、添加@SentinelResource 用于定义资源
@SentinelResource 注解参数定义:地址
代码如下(示例):
@RestController
public class ConfigController {
@SentinelResource(value = "getUserInfo",blockHandler = "exceptionHandler",fallback = "errHandler")
@GetMapping(value = "/getUserInfo")
public CommonResult getUserInfo(@RequestParam String name) {
Pagination pagination = new Pagination();
pagination.setPageSize(100);
return CommonResult.success(name).bindPagination(pagination);
}
public CommonResult exceptionHandler(String name, BlockException ex) {
return CommonResult.FAILED("服务限流了");
}
public CommonResult errHandler(String name) {
return CommonResult.FAILED("服务降级了");
}
}
四、添加配置规则
代码如下(示例):
public static void main(String[] args) {
SpringApplication.run(CloudProviderApplication.class, args);
initFlowRules();
}
private static void initFlowRules(){
List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("getUserInfo");
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
// Set limit QPS to 20.
rule.setCount(20);
rules.add(rule);
FlowRuleManager.loadRules(rules);
}