自定义资源点
@SentinelResource 注解主要参数:
value: 资源名称
blockHandler: 处理blockException的函数
1.实现熔断的异常处理
@SentinelResource(value = "userService_getUser", blockHandler = "getUserExceptionHandler")
public User getUser(String userId) {
User user = new User();
user.setUserId(userId);
user.setName(userName);
user.setMobile("11122223333");
return user;
}
/** 处理BlockException的函数,需public,返回类型需与原方法相匹配 */
public User getUserExceptionHandler(String userId, BlockException e) {
log.error( "blockHandler:" + userId, e);
return null;
}
调用后,sentinel控制台簇点链路出现资源点,点击流控,QPS改为1

2. 实现熔断降级
点击 降级


当异常率超过50%时,后续2秒内的调用直接触发熔断降级,默认情况下会直接抛出DegraderException
3. 熔断后的降级处理
@SentinelResource(value = "userService_getUser2", fallback = "getUser2ExceptionHandler")
public void getUser2(String userId) {
log.info(userId);
throw new RuntimeException();
}
public void getUser2ExceptionHandler(String userId) {
log.error( "fallback:" + userId);
}
满足熔断降级条件后,会执行fallback方法
注意
blockHandler和fallback都进行了配置,则被限流降级抛出BlockException异常,只会进入blockHandler处理;若未配置 blockHandler、fallback 和 defaultFallback,则被限流降级时会将 BlockException 直接抛出。