美文网首页我的微服务
Sentinel简记(二)blockHandler与fallBa

Sentinel简记(二)blockHandler与fallBa

作者: KenChen_939 | 来源:发表于2020-10-19 08:31 被阅读0次

写在前面

在初始状态下,使用Sentinel对接口做了一些熔断限流的配置。当触发熔断降级的时候,使用的是Sentinel默认的兜底方法。但是系统默认的并没有体现我们的业务要求。
所以Sentinel提供了blockHandler和fallback。

一句话:

fallback管理的是java运行异常。blockHandler管sentinel的控制台违规配置。
若blockHandler和fallback都进行了配置,则被限流降级而抛出BlockException时只会进入blockHandler处理逻辑。

客户端自定义限流处理逻辑步骤

  • 创建:HanlderExpection类用于自定义限流处理逻辑
    注意对应的函数必须为 static 函数,否则无法解析。
public class HanlderExpection {
    public static String AllHandlerExpection(BlockException exception){
        return "Client       全局HandlerExpection"+exception;
    }

    public static String HandlerExpectionA(BlockException exception){
        return "Client      自定义HandlerExpection";
    }
}
  • 创建ClientFallBack类用于自定义fallback
    注意对应的函数必须为 static 函数,否则无法解析。
public class ClientFallBack {
    public static String allFallBack(){
        return "Client   全局自定义fallback";
    }

    public static String fallBackA(){
        return "Client    自定义fallback";
    }
}
  • controller设置@SentinelResource
@GetMapping("/serviceTestB")
    @SentinelResource(value = "serviceTestB",
            blockHandlerClass = HanlderExpection.class,
            blockHandler = "AllHandlerExpection",
            fallbackClass = ClientFallBack.class,
            fallback = "allFallBack"
    )
    public String serviceTestB(){
        return restTemplate.getForObject(serverUrl+"/serviceTestA",String.class);
    }

测试:此时在Sentinel控制台设置流控熔断规则,当接口触发后兜底方法为客户端自定义当blockHandler,接口方法出现异常则会执行自定义fallback。

相关文章

网友评论

    本文标题:Sentinel简记(二)blockHandler与fallBa

    本文链接:https://www.haomeiwen.com/subject/gfohmktx.html