at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.alibaba.csp.sentinel.slots.block.flow.FlowException: null
SpringBoot 整合 Sentinel,报 FlowException: null,
原因是: blockHandler 对应的方法,入参或者出参不匹配,必需跟 @SentinelResource 注解的方法 入参出参一致
如下案例:
@GetMapping("queryById")
@SentinelResource(value = "TestQueryById", blockHandler = "failBlockHandler")
public AjaxJson<Order> queryById(@ApiIgnore Order eo) {
service.addClickCount(eo);
return AjaxJson.success(eo);
}
public AjaxJson<Order>failBlockHandler(@ApiIgnore Order eo, BlockException be) {
return AjaxJson.error("您访问的太频繁了,请稍后再试!");
}
Sentinel 官方文档 :https://sentinelguard.io/zh-cn/docs/introduction.html