sentinel - @SentinelResource注解使用-2 全局统一定义兜底方法,降级方法,异常处理方法等 blockHandlerClass,fallbackClass 参数使用

目前兜底方案面临的问题
1 自定义的处理方法和业务代码耦合在一块,不直观。
2 每个业务方法都添加一个兜底的,那代码膨胀加剧。
3 全局统一的处理方法没有体现。

@SentinelResource注解的描述,参考文档
https://blog.csdn.net/qq_41712271/article/details/118356079

项目构建用以下的项目
https://blog.csdn.net/qq_41712271/article/details/117596349?spm=1001.2014.3001.5501

1 业务类controller层代码编写

@RestController
public class Controller_4 {
    @SentinelResource(value = "getProduct",
            blockHandlerClass = CustomerBlockHandler.class,
            blockHandler = "jiangji_1",
            fallbackClass =CustomerFallBack.class,
            fallback = "fallback_1")
    @RequestMapping("/getProduct")
    public String getProduct(@RequestParam(name = "type", required = false) String type,
                             @RequestParam(name = "name", required = false) String name) {
        //模拟报错
        System.out.println(1 / 0);
        return type + " " + name;
    }
}

2 全局降级类的编写

public class CustomerBlockHandler {

    public static String jiangji_1(String type, String name, BlockException be) {
        System.out.println(be.getMessage());
        return "Sentinel 流控降级热点时调用的方法----111111---"+type+" "+name;
    }

    public static String jiangji_2(String type, String name, BlockException be) {
        System.out.println(be.getMessage());
        return "Sentinel 流控降级热点时调用的方法----222222---"+type+" "+name;
    }

}

3 全局java异常类编写

public class CustomerFallBack {

    public static String fallback_1(@RequestParam(name = "type", required = false) String type,
                                        @RequestParam(name = "name", required = false) String name) {
        return "1111111111-------java代码运行时产生的异常调用,没有异常时该怎么运行,怎么运行 "+type+" "+name;
    }

    public static String fallback_2(@RequestParam(name = "type", required = false) String type,
                             @RequestParam(name = "name", required = false) String name) {
        return "2222222222-------java代码运行时产生的异常调用,没有异常时该怎么运行,怎么运行 "+type+" "+name;
    }
}

4 在控制台配置sentinel规则
5 用jmeter测试

你可能感兴趣的:(#,SpringCloud,spring,cloud,sentinel)