若您的OpenFeign应用接入ARMS应用监控后,出现数据不完整、看不到下游应用的数据等情况,可能的原因是OpenFeign组件默认开启了使用RxJava异步框架的Hystrix,而ARMS不支持异步框架。
说明
本文仅限于ARMS应用监控Java Agent版本低于2.6.0的场景,2.6.0及以上版本已支持异步框架。
您可以通过关闭Hystrix并配置OkHttp请求类来解决此类问题:
在pom.xml文件中添加以下依赖。
<!-- OKHttp对Feign支持 --> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency>
在SpringCloud配置文件中添加以下配置。
feign.okhttp.enabled: true feign.hystrix.enabled: false
配置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(); }