当前位置: 首页 > news >正文

springboot集成Sentinel

1、添加依赖

  • 该版本匹配springboot 2.3.x和2.4.x
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2021.1</version>
</dependency>

2、SentinelConfig配置限流规则

@Configuration
public class SentinelConfig {@Beanpublic SentinelResourceAspect sentinelResourceAspect() {return new SentinelResourceAspect();}@PostConstructprivate void initRules() {//=============================规则1=========================FlowRule rule1 = new FlowRule();rule1.setResource("rule1");//规则名称rule1.setGrade(RuleConstant.FLOW_GRADE_QPS);//如果设置0则按照线程数限流,如果设置1则按照QPS(每秒查询率)限流rule1.setCount(100);   // 每秒调用最大次数为 100 次rule1.setControlBehavior(0);//0快速失败,1预警,2排队等候rule1.setMaxQueueingTimeMs(1000);//排队超时阈值//=============================规则2=========================FlowRule rule2 = new FlowRule();rule2.setResource("rule2");rule2.setGrade(RuleConstant.FLOW_GRADE_QPS);rule2.setCount(10);   // 每秒调用最大次数为 10 次List<FlowRule> rules = new ArrayList<>();rules.add(rule1);rules.add(rule2);FlowRuleManager.loadRules(rules);}
}

3、API限流

@SentinelResource(value = "rule1", blockHandler = "poll", blockHandlerClass = SentinelHandler.class)
@ApiOperation("批量拉取消息")
@PostMapping("/poll")
public BaseResult poll(@RequestBody @Valid PollMessageRequest request){return BaseResult.success(kafkaService.poll(request));
}

4、配置handler

  • handler里的方法必须用public static修饰
  • handler里的方法的返回值类型必须和原方法保持一致,参数是在原参数后边加一个BlockException
public class SentinelHandler {public static BaseResult poll(PollMessageRequest request, BlockException e) {throw new BusinessException("请勿频繁操作");}
}

http://www.lryc.cn/news/109635.html

相关文章:

  • 数据结构——单链表OJ题
  • 【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT
  • 《前端开发 实践之 构建工具的了解》
  • MySQL 主从搭建
  • 国内GitHub加速访问工具-Fetch GitHub Hosts
  • Webpack5新手入门简单配置
  • 基于ali-oss实现不同类型文件上传不同的bucket
  • 域名校验?反爬界的掩耳盗铃!
  • Cesium 实战教程 - 调整 3dtiles 倾斜摄影大小
  • python机器学习(七)决策树(下) 特征工程、字典特征、文本特征、决策树算法API、可视化、解决回归问题
  • 数据结构与算法中的双向链表
  • 数据安全治理的关键-数据分类分级工具
  • Spring集成Junit
  • Java正则校验密码至少包含:字母数字特殊符号中的2种
  • Stable Diffusion教程(6) - 扩展安装
  • Jenkins通过OpenSSH发布WinServer2016
  • 字母异位词分组 LeetCode热题100
  • 使用angular和electron 构建桌面应用
  • 安达发制造工业迈向智能化:APS高级计划排程助力提升生产效率
  • Flink - sink算子
  • 【项目 线程2】3.5 线程的分离 3.6线程取消 3.7线程属性
  • Filebeat+ELK 部署
  • el-table点击表格某一行添加到URL参数,访问带参URL加载表格内容并滚动到选中行位置 [Vue3] [Element-plus 2.3]
  • 【树】 二叉树 堆与堆排序 平衡(AVL)树 红黑(RB)树
  • 信号平滑或移动平均滤波研究(Matlab代码实现)
  • 黑客技术(网络安全)自学
  • 使用七牛云、阿里云、腾讯云的对象存储上传文件
  • 使用阿里云DataX完成数据同步
  • 《Kali渗透基础》13. 无线渗透(三)
  • python——案例六:判断字符串的长度