注:sentinel中的@sentinelResource注解的使用相当于Hystrix中的@HystrixCommand注解,目的是当微服务系统中出现异常时,能够反馈给客户我们自己定义的页面,如果不使用该注解也可以,那么出现异常反馈给客户的页面是由系统自定义的(比较的单调)。
@GetMapping("/byResource")
@SentinelResource(value = "byResource", blockHandler = "handleException")
public CommonResult byResource() {
return new CommonResult(200, "按资源名称限流测试ok", new Payment((long) 2020, "serial001"));
}
public CommonResult handleException(BlockException exception) {
return new CommonResult(444, exception.getClass().getCanonicalName() + "\t 服务不可用");
}
注:异常处理的兜底方法的返回值要严格与处理器的返回值相同,否则会报错,兜底方法的参数必须携带 BlockException exception 。