若您的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(); }