全部產品
Search
文件中心

Application Real-Time Monitoring Service:使用OpenFeign組件的應用在ARMS中資料不完整怎麼辦?

更新時間:Jul 06, 2024

若您的OpenFeign應用接入ARMS應用監控後,出現資料不完整、看不到下遊應用的資料等情況,可能的原因是OpenFeign組件預設開啟了使用RxJava非同步架構的Hystrix,而ARMS不支援非同步架構。

說明

本文僅限於ARMS應用監控Java Agent版本低於2.6.0的情境,2.6.0及以上版本已支援非同步架構。

您可以通過關閉Hystrix並配置OkHttp請求類來解決此類問題:

  1. pom.xml檔案中添加以下依賴。

    <!-- OKHttp對Feign支援 -->
    <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();
     }