すべてのプロダクト
Search
ドキュメントセンター

:OpenFeign コンポーネントを使用するアプリケーションのデータが ARMS で不完全なのはなぜですか?

最終更新日:Dec 30, 2024

OpenFeign コンポーネントを使用するアプリケーションを ARMS アプリケーションモニタリングに接続した後、アプリケーションデータが不完全で、ダウンストリームアプリケーションのデータが表示されない場合があります。この問題は、OpenFeign コンポーネントがデフォルトで RxJava 非同期フレームワークを使用する Hystrix を有効にするために発生する可能性があります。ただし、ARMS は非同期フレームワークをサポートしていません。

説明

このトピックは、Java アプリケーション用の ARMS エージェントのバージョンが 2.6.0 より前のシナリオに適用されます。Java アプリケーション用に提供されるバージョン 2.6.0 以降の ARMS エージェントは、非同期フレームワークをサポートしています。

この問題を解決するには、Hystrix を無効にし、OkHttp リクエストクラスを有効にします。

  1. pom.xml ファイルに次の依存関係を追加します。

    <!-- OKHttp supports 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();
     }