不要用Hystrix运行时异常包装Feign客户端后备方法的异常。
创始人
2025-01-11 00:30:22
0

在使用Feign和Hystrix的时候,可以通过自定义Feign的ErrorDecoder来解决使用Hystrix运行时异常包装Feign客户端后备方法的异常问题。

首先,创建一个自定义的ErrorDecoder类,继承自Feign的ErrorDecoder接口,重写decode方法。在decode方法里判断异常类型,如果是HystrixRuntimeException,则获取原始异常并抛出。

import feign.FeignException;
import feign.Response;
import feign.codec.ErrorDecoder;
import com.netflix.hystrix.exception.HystrixRuntimeException;

public class CustomErrorDecoder implements ErrorDecoder {

    private final ErrorDecoder defaultErrorDecoder = new Default();

    @Override
    public Exception decode(String methodKey, Response response) {
        Exception exception = defaultErrorDecoder.decode(methodKey, response);

        if (exception instanceof HystrixRuntimeException) {
            Throwable cause = exception.getCause();
            if (cause instanceof FeignException) {
                return (FeignException) cause;
            }
        }

        return exception;
    }
}

然后,在使用Feign的时候,通过Feign.builder().errorDecoder(new CustomErrorDecoder())来设置使用自定义的ErrorDecoder。

import feign.Feign;
import feign.RequestLine;
import feign.Response;

public interface MyFeignClient {

    @RequestLine("GET /api/endpoint")
    Response requestEndpoint();
}

public class Main {

    public static void main(String[] args) {
        MyFeignClient feignClient = Feign.builder()
                .errorDecoder(new CustomErrorDecoder())
                .target(MyFeignClient.class, "http://localhost:8080");

        try {
            feignClient.requestEndpoint();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

通过上述方法,就可以避免使用Hystrix运行时异常包装Feign客户端后备方法的异常,而是直接抛出Feign本身的异常。

相关内容

热门资讯

透视黑科技!智星德州菠萝安装,... 智星德州菠萝安装新手教程相关信息汇总(需添加指定Q群1067239143获取下载链接);透视黑科技!...
透视存在!hhpoker透视下... 透视存在!hhpoker透视下载链接在哪里,wpk有脚本吗,必看攻略(有挂规律)1、在hhpoker...
透视了解!智星菠萝辅助,wep... 1、透视了解!智星菠萝辅助,wepoker底牌透视脚本,2025新版技巧(从来有挂);详细教程。2、...
透视辅助!aapoker俱乐部... 透视辅助!aapoker俱乐部靠谱吗,智星德州菠萝安装,记者爆料(有挂透明),您好,aapoker俱...
透视美元局!wepoker透视... wepoker透视脚本苹果新手教程相关信息汇总(需添加指定Q群1067239143获取下载链接);透...
透视讲解!aapoker透视插... 透视讲解!aapoker透视插件下载,智星德州菠萝透视插件工具,玩家必看秘籍(有挂技巧)1、智星德州...
透视规律!wepoker免费透... 透视规律!wepoker免费透视脚本,hhpoker俱乐部是干嘛的,技巧教程(都是是真的有挂)是一款...
透视科技!wepoker透视脚... 透视科技!wepoker透视脚本安卓,aapoker有脚本吗,普及知识(有挂总结);一、wepoke...
透视透视!wpk辅助ai,约局... 透视透视!wpk辅助ai,约局吧如何查看是否有挂,黑科技教程(总是真的有挂)关于wpk辅助ai机制的...
透视科技!德普之星app安卓版... 透视科技!德普之星app安卓版破解版,wpk辅助插件叫什么,1分钟了解(有挂黑科技)您好,德普之星a...