Amazon SQS でのメッセージのタイムリーな処理 - Amazon Simple Queue Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SQS でのメッセージのタイムリーな処理

可視性タイムアウトの設定は、アプリケーションがメッセージを処理し、削除するのにかかる時間によって異なります。たとえば、アプリケーションでメッセージを処理するには 10 秒必要だが、可視性タイムアウトを 15 分に設定した場合、前のメッセージ処理に失敗すると、再度処理されるまでに長時間待つ必要があります。または、アプリケーションでメッセージを処理するには 10 秒必要だが、可視性タイムアウトを 2 秒に設定した場合は、元のコンシューマーがメッセージを処理している間に別のコンシューマーより重複メッセージが送信されます。

メッセージの処理に十分な時間を確保するために、次のいずれかの方法を使用します:

  • メッセージの処理にかかる時間がわかっている (または合理的に見積もることができる) 場合は、メッセージの可視性タイムアウトを、メッセージの処理と削除にかかる最大時間に拡張します。詳細については、{可視性タイムアウトの構成}を参照してください。

  • メッセージの処理にかかる時間がわからない場合は、コンシューマプロセスについてハートビートを作成:初期可視性タイムアウト (2 分など) を特定し、コンシューマがメッセージで作業している限り、可視性タイムアウトを 1 分ごとに 2 分延長します。

    重要

    最大可視性タイムアウトは、ReceiveMessageAmazon SQS がメッセージを受信してから 12 時間です。可視性タイムアウトを延長しても、最大 12 時間はリセットされません。

    さらに、ReceiveMessageリクエストがタイマーを開始してから 12 時間 (43,200 秒など) は、個々のメッセージのタイムアウトを設定できない場合があります。例えば、メッセージを受信し、すぐに 43,200 秒VisibilityTimeoutに等しい のChangeMessageVisibility呼び出しを送信して最大 12 時間を設定すると、失敗する可能性があります。ただし、 経由でのメッセージのリクエストReceiveMessageと可視性タイムアウトの更新の間に大幅な遅延がない限り、43,195 秒の値を使用すると機能します。コンシューマーが 12 時間以上必要とする場合は、Step Functionsの使用を検討してください。