alibaba / Sentinel

A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
https://sentinelguard.io/
Apache License 2.0
22.45k stars 8.04k forks source link

关于热点参数规则的两个问题 #3455

Open wrgljylys opened 1 month ago

wrgljylys commented 1 month ago

Sentinel 版本 1.8.6

问题一 直接在请求响应这一层的资源,例如

    @GetMapping("/s3/g")
    public String g(String hotParam, String value) {
        return service.g(hotParam, value);
    }

以请求路径为资源名,设置了热点参数规则 热点规则 但实际运行中,热点规则似乎不生效

另外,在请求响应上套一层@SentinelResource ,针对SentinelResource 指定的资源,设置热点参数规则是可以生效的 是热点参数规则不支持直接在请求响应上设置规则吗?还是我漏了什么设置?

问题二 我通过实现 BlockExceptionHandler 接口的组件,想在全局范围内实现 触发规则的BlockException处理 普通流控规则是可以捕获到BlockException(FlowException)做处理的 但是对于热点参数规则,捕获不到BlockException(ParamFlowException)而无法做处理(异常仍然被抛出,最终导致500错误) 对此 我需要怎样处理呢?

谢谢

XiaZhouxx commented 1 month ago

看了下第一个问题应该就是bug [#3453], 第二问题应该就是实现不同, @SentinelResource 需要在注解指定异常处理类, 它的实现没有基于BlockExceptionHandler