OpenFeign コンポーネントを使用するアプリケーションを ARMS アプリケーションモニタリングに接続した後、アプリケーションデータが不完全で、ダウンストリームアプリケーションのデータが表示されない場合があります。この問題は、OpenFeign コンポーネントがデフォルトで RxJava 非同期フレームワークを使用する Hystrix を有効にするために発生する可能性があります。ただし、ARMS は非同期フレームワークをサポートしていません。
説明
このトピックは、Java アプリケーション用の ARMS エージェントのバージョンが 2.6.0 より前のシナリオに適用されます。Java アプリケーション用に提供されるバージョン 2.6.0 以降の ARMS エージェントは、非同期フレームワークをサポートしています。
この問題を解決するには、Hystrix を無効にし、OkHttp リクエストクラスを有効にします。
pom.xml ファイルに次の依存関係を追加します。
<!-- OKHttp supports 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(); }