http://docs.aws.Amazon.com/general/latest/gr/api-retries.html
このドキュメントでは、「各AWS SDKはJavaのリクエストを自動的に再試行するための自動再試行ロジックとAWS SDKを実装している」と述べています。
Java AWS SDK、リトライ構成を指定しない場合のデフォルトのメカニズムは何ですか?Java AWS SDKを使用しており、簡単に取得できますAWSサービス側で何かが失敗した場合のサービス例外。「自動」再試行メカニズムは経験したことがありません。この再試行メカニズムについて誰かが説明できますか?
同じドキュメントのページは言う:
JavaのAWS SDKは自動的にリクエストを再試行します。
ClientConfiguration
クラスを使用して再試行設定を構成できます。
公式ドキュメントで ClientConfiguration
を確認する必要があります。再試行ロジックに関する動作を調整するためのメソッドがたくさんあります。ここで最も重要です:
withMaxErrorRetry
失敗した再試行可能なリクエストの再試行の最大数を設定します(例:サービスからの5xxエラー応答)withRequestTimeout
リクエストが完了するまで待機する時間(ミリ秒)を設定してから、中止してタイムアウトします[...]withThrottledRetries
再試行の調整は、リクエストの大部分が失敗し、再試行が失敗した場合に、再試行をインテリジェントに調整する機能です[...]withRetryPolicy
これは最も興味深いもので、 RetryPolicy
を選択して変更できます:BackoffStrategy
再試行間のスリープ時間を制御するカスタムバックオフ戦略を提供するためのフックRetryCondition
失敗したリクエストを再試行する必要があるかどうかに関するカスタム条件を提供するためのフックmaxErrorRetry
honorMaxErrorRetryInClientConfig
(上記の構成設定を尊重するかどうか)また、自動再試行メカニズムに気付いていない場合は、クライアント側のエラーが原因である可能性もあります。これらの設定は、サーバー(5xx)またはスロットリングエラーの場合にリクエストを再試行するためのものです。
クライアントエラー(4xx)は、再試行する前に要求を修正して問題を修正する必要があることを示します
「サービス側」が失敗したと主張する場合は、状況を再現して実際に何が起こっているかを分析するためのコードを提供する必要があります。
次にデフォルトについて:
Java SDKのデフォルトのメカニズムは何ですか、再試行構成を指定しない場合はどうなりますか?
ClientConfiguration
定数フィールド のデフォルト値を検索できます。ただし、使用するサービスによって異なる場合があることに注意してください(特にDynamoDBは特殊なケースです)。 PredefinedClientConfigurations
および PredefinedRetryPolicies
クラスも確認してください。