翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SQS でのメッセージのタイムリーな処理
可視性タイムアウトの設定は、アプリケーションがメッセージを処理し、削除するのにかかる時間によって異なります。たとえば、アプリケーションでメッセージを処理するには 10 秒必要だが、可視性タイムアウトを 15 分に設定した場合、前のメッセージ処理に失敗すると、再度処理されるまでに長時間待つ必要があります。または、アプリケーションでメッセージを処理するには 10 秒必要だが、可視性タイムアウトを 2 秒に設定した場合は、元のコンシューマーがメッセージを処理している間に別のコンシューマーより重複メッセージが送信されます。
メッセージの処理に十分な時間を確保するために、次のいずれかの方法を使用します:
-
メッセージの処理にかかる時間がわかっている (または合理的に見積もることができる) 場合は、メッセージの可視性タイムアウトを、メッセージの処理と削除にかかる最大時間に拡張します。詳細については、{可視性タイムアウトの構成}を参照してください。
-
メッセージの処理にかかる時間がわからない場合は、コンシューマプロセスについてハートビートを作成:初期可視性タイムアウト (2 分など) を特定し、コンシューマがメッセージで作業している限り、可視性タイムアウトを 1 分ごとに 2 分延長します。
重要
最大可視性タイムアウトは、
ReceiveMessage
Amazon SQS がメッセージを受信してから 12 時間です。可視性タイムアウトを延長しても、最大 12 時間はリセットされません。さらに、
ReceiveMessage
リクエストがタイマーを開始してから 12 時間 (43,200 秒など) は、個々のメッセージのタイムアウトを設定できない場合があります。例えば、メッセージを受信し、すぐに 43,200 秒VisibilityTimeout
に等しい のChangeMessageVisibility
呼び出しを送信して最大 12 時間を設定すると、失敗する可能性があります。ただし、 経由でのメッセージのリクエストReceiveMessage
と可視性タイムアウトの更新の間に大幅な遅延がない限り、43,195 秒の値を使用すると機能します。コンシューマーが 12 時間以上必要とする場合は、Step Functionsの使用を検討してください。