sentinel设置blockHandlerClass和blockHandler不生效的坑
sentinel设置blockHandlerClass和blockHandler不生效的坑
先铺环境:
<properties><java.version>1.8</java.version><mavenpiler.source>8</mavenpiler.source><mavenpiler.target>8</mavenpiler.target><sprng.cloud.alibaba.version>2.2.6.RELEASE</sprng.cloud.alibaba.version><spring.boot.version>2.3.2.RELEASE</spring.boot.version><spring.cloud.version>Hoxton.SR9</spring.cloud.version></properties><!-- 依赖 --><dependencyManagement><dependencies><!--spring cloud alibaba 版本管理器--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${sprng.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!--spring boot 版本管理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><!--spring cloud 版本管理器--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><!-- 配置文件设置 -->
依据官网匹配的版本规则,sentinel选择的1.8.1版本
控制层依据官网配置全局方法,指定类和方法,方法和原方法同参,并且增加BlockException入参
@RestController
@RequestMapping("/consumer")
@RefreshScope // 刷新自定义配置文件数据
public class ConsumerController {@Resourceprivate ProviderService providerService;@Value("${config.globeInfo}")private String globeInfo;@GetMapping("/test/{name}")@SentinelResource(value = "testBlock", blockHandlerClass = GlobeBlockException.class, blockHandler = "blockHandler")public String test(@PathVariable("name") String name){return providerService.test(name) + "~~~~~~ " + globeInfo;}
}
全局处理
public class GlobeBlockException {public static String blockHandler(String name, BlockException e){return "name:" + name + "~~被限流";}
}
未设置限流机制时,正常请求,无异常
增加限流机制,设置QPS为1,超过1即触发限流:
结果显示系统默认返回值 Blocked by Sentinel (flow limiting),配置未生效:
沉思,查看官网描述,没发现问题,继续沉思:
顿悟,SentinelResource设置了名称testBlock,这些配置是不是默认按照名称匹配呢?
@SentinelResource(value = "testBlock", blockHandlerClass = GlobeBlockException.class, blockHandler = "blockHandler")
添加名称限流设置:
结果依旧gg。
接着顿悟,删掉按照地址匹配规则呢???
成了!!!!!!!!!!!!!!!!!!!!
大功告成,没啥资料,忍不住吐槽,官网资料真少 /(ㄒoㄒ)/~~
最新文章
- matlab 回归分析t检验,第三章 利用Matlab和SPSS进行线性回归分析
- Http Digest 认证
- linux驱动
- 《LRU Cache》
- 回溯算法(回溯搜索法)
- Azure App object和Service Principal
- mmap()
- CruiseControl.Net学习记录
- SAP 启动物料帐后不可更改物料价格的处理方法
- 【网络流量监控工具之Nethogs】
- postgresql 命令行操作
- C# WebForm
- Shiro和SpringSecurity
- lssvr matlab,lssvm(最小二乘支持向量机)matlab
- jmeter性能测试脚本录制不了的几种情况
- jsp中文传值到java乱码
- 【STM32学习笔记】(13)——外部中断详解