web-dev-qa-db-ja.com

Hystrixで再試行する方法

REST呼び出しをカプセル化するhystrixコマンドがあります。失敗(タイムアウトなど)の場合は、1回再試行し、失敗した場合は適切なエラーを返します。

ご覧のとおり、Hystrixは再試行をサポートしていません。 Hystrixでこれを行う唯一の方法は、メインロジックをgetFallback()メソッドに入れることです。しかし、それは正しくないようです。

では、hystrixでタイムアウトを実装する適切な方法は何ですか?

12
evgeniy44

Hystrix自体は、どのようなコマンドでラップされるかを気にせず、再試行の概念をサポートしていません。アイデアの背後にある例:コマンド(RESTリクエストをラップする)がパラメーター化されている場合、一部のリソースエンドポイントを再試行し、他のエンドポイントは再試行しない可能性があります。2つの再試行をアクティブにするためにほぼ同じまたは技術的なパラメーターを実行するコマンドさらに、これによりプロジェクトがさらに複雑になります。

この問題を回避してHystrixを使い続けるには、Springアプリケーションで作業している場合は SpringRetry を確認することをお勧めします。

別の可能な解決策は resilience4j です。これは、このコンテキストではHystrixとSpringRetryの組み合わせと見なすことができます。

11
meistermeier