You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud OpenFeign HTTP客户端排查切换及New Relic追踪问题

问题解答:OpenFeign与New Relic链路追踪适配

1. OpenFeign是Web客户端还是依赖Web客户端的库?

OpenFeign不是Web客户端,它是一个声明式HTTP客户端框架,仅负责请求接口定义、注解解析、编解码等上层逻辑,实际发送HTTP请求的工作完全依赖底层的具体Web客户端实现(比如OkHttp、Apache HttpClient、Java原生HttpURLConnection等)。

2. 如何查看当前使用的Web客户端?

有几种实用方式可以确认:

  • 查看依赖树:
    执行Maven命令:
    mvn dependency:tree
    
    或Gradle命令:
    ./gradlew dependencies
    
    在输出中查找feign-开头的依赖,比如feign-okhttp、feign-hc(对应Apache HttpClient);如果没有这类特定客户端依赖,默认会使用Java原生的HttpURLConnection。
  • 打印Bean类型:
    在Spring配置类或启动类中注入Feign的Client Bean并打印类名:
    @Autowired
    private Client feignClient;
    
    @PostConstruct
    public void printFeignClientType() {
        System.out.println("当前Feign使用的Web客户端:" + feignClient.getClass().getName());
    }
    
    启动应用后即可在控制台看到具体的客户端实现类。
  • 查看Feign日志:
    在application.properties中开启Feign的DEBUG日志:
    logging.level.your.feign.interface.package=DEBUG
    
    发起请求后,日志中会显示客户端相关信息,比如原生HttpURLConnection会出现sun.net.www.protocol.http.HttpURLConnection相关日志。

3. 如何切换Web客户端?

结合你提供的New Relic支持列表,推荐切换到OkHttp或Apache HttpClient,以下是适配你Java 8 + Spring Boot 2.0.3 + Spring Cloud OpenFeign 2.0.0环境的配置步骤:

切换到OkHttp(推荐,符合New Relic 3.6.0+版本要求)

  1. 添加依赖到pom.xml:
    <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-okhttp</artifactId>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>3.14.9</version> <!-- 适配Java8和Spring Boot2.0的稳定版本 -->
    </dependency>
    
  2. 启用OkHttp:
    在application.properties中添加配置:
    feign.okhttp.enabled=true
    
    或自定义配置类创建OkHttp Bean:
    @Configuration
    public class FeignOkHttpConfig {
        @Bean
        public OkHttpClient okHttpClient() {
            return new OkHttpClient.Builder()
                    .connectTimeout(10, TimeUnit.SECONDS)
                    .readTimeout(10, TimeUnit.SECONDS)
                    .build();
        }
    
        @Bean
        public Client feignClient(OkHttpClient okHttpClient) {
            return new feign.okhttp.OkHttpClient(okHttpClient);
        }
    }
    

切换到Apache HttpClient 4.x

  1. 添加依赖到pom.xml:
    <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-hc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.13</version> <!-- New Relic支持的稳定版本 -->
    </dependency>
    
  2. 启用Apache HttpClient:
    在application.properties中添加:
    feign.httpclient.enabled=true
    

切换完成后重启应用,New Relic Java Agent即可识别对应的Web客户端,将Feign调用纳入链路追踪。

内容的提问来源于stack exchange,提问作者John Little

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:16:17