2021-03-10

使用feign调用其他服务发现需要自定义ErrorCode,因为不是所有的情况都需要熔断,自定义的ErrorCode中可以根据错误码来自定义返回异常:

@Configuration
public class MyErrorDecoder extends ErrorDecoder.Default {
    @Override
    public Exception decode(String s, Response response) {
        if(response.status() == 401){
            return new BusinessException("请求"+s+"服务"+ErrorCodeEnum.TOKEN_ERROR);
        }
        if(response.status() == 404){
            return new BusinessException("请求"+s+"服务404异常");
        }
        return new BusinessException("请求"+s+"服务"+ErrorCodeEnum.FEIGN_ERROR_FALLBACK);
    }


}

这种形式发现自定义的BusinessException无法进入自定义的统一异常返回,原来需要返回HystrixBadRequestException,这个异常可以让其不进入熔断直接返回:

if (response.status() == 401) {
    return new HystrixBadRequestException("请求" + s + "服务401异常",new BusinessException(ErrorCodeEnum.TOKEN_ERROR));
}
if (response.status() == 404) {
    return new HystrixBadRequestException("请求" + s + "服务404异常",new BusinessException(ErrorCodeEnum.FEIGN_ERROR_FALLBACK));
}
return new BusinessException("请求" + s + "服务异常");

 

 

上一篇:Django 学习手册 - 下载数据库表格(XLS/CSV)


下一篇:Linux 安装 Nginx