我的微服务

Sentinel简记(二)blockHandler与fallBa

2020-10-19  本文已影响0人  KenChen_939

写在前面

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

一句话:

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

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

public class HanlderExpection {
    public static String AllHandlerExpection(BlockException exception){
        return "Client       全局HandlerExpection"+exception;
    }

    public static String HandlerExpectionA(BlockException exception){
        return "Client      自定义HandlerExpection";
    }
}
public class ClientFallBack {
    public static String allFallBack(){
        return "Client   全局自定义fallback";
    }

    public static String fallBackA(){
        return "Client    自定义fallback";
    }
}
@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。

上一篇 下一篇

猜你喜欢

热点阅读