使用OpenFeign组件的应用在ARMS中数据不完整怎么办?

若您的OpenFeign应用接入ARMS应用监控后,出现数据不完整、看不到下游应用的数据等情况,可能的原因是OpenFeign组件默认开启了使用RxJava异步框架的Hystrix,而ARMS不支持异步框架。

说明

本文仅限于ARMS应用监控Java Agent版本低于2.6.0的场景,2.6.0及以上版本已支持异步框架。

您可以通过关闭Hystrix并配置OkHttp请求类来解决此类问题:

  1. pom.xml文件中添加以下依赖。

    <!-- OKHttpFeign支持 -->
    <dependency>
     <groupId>io.github.openfeign</groupId>
     <artifactId>feign-okhttp</artifactId>
    </dependency> 
  2. SpringCloud配置文件中添加以下配置。

    feign.okhttp.enabled: true
    feign.hystrix.enabled: false 
  3. 配置OkHttp请求类。

    @Configuration
    @ConditionalOnClass(Feign.class)
    @AutoConfigureBefore(FeignAutoConfiguration.class)
    public class FeignClientOkHttpConfiguration {
    
     @Bean
     public OkHttpClient okHttpClient() {
     return new OkHttpClient.Builder()
     // 连接超时
     .connectTimeout(20, TimeUnit.SECONDS)
     // 响应超时
     .readTimeout(20, TimeUnit.SECONDS)
     // 写超时
     .writeTimeout(20, TimeUnit.SECONDS)
     // 是否自动重连
     .retryOnConnectionFailure(true)
     // 连接池
     .connectionPool(new ConnectionPool())
     .build();
     }