Amazon SQSメッセージグループ ID の使用 - Amazon Simple Queue Service

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

Amazon SQSメッセージグループ ID の使用

MessageGroupIdは、特定のメッセージグループに属することを指定するタグです。同じメッセージグループに属するメッセージは、常にメッセージグループに対して厳密な順序で 1 つずつ処理されます(ただし、異なるメッセージグループに属するメッセージは、順不同に処理されます)。

複数の順序付けされたメッセージグループのインターリーブ

単一のFIFO キューに複数の順序付けされたメッセージグループをインターリーブするには、メッセージグループ ID 値を使用します (たとえば、複数のユーザーによるセッションデータ)。このシナリオでは、複数のコンシューマーでキューを処理できますが、各ユーザーのセッションデータはFIFO方式で処理されます。

注記

特定のメッセージグループ ID に属するメッセージが表示されない場合、他のコンシューマーでも同じメッセージグループ ID のメッセージを処理できません。

マルチプロデューサー-コンシューマーシステムでの重複処理の回避

順序よりもスループットやレイテンシーが重要な場合に、システム内で複数のプロデューサーおよびコンシューマーが重複メッセージを処理することを避けるには、プロデューサーがメッセージごとに一意のメッセージグループ ID を生成する必要があります。

注記

このシナリオでは、重複は削除されます。ただし、メッセージの順序は保証できません。

複数のプロデューサーとコンシューマーを使用するシナリオでは、あるワーカーが可視性タイムアウト内にメッセージを処理せず、他のワーカーがそのメッセージを使用できるようになった場合、意図せず重複メッセージを配信するリスクは増大します。

同じメッセージグループ ID を持つメッセージの大きなバックログを回避する

FIFOキューでは、最大 20,000通のインフライトメッセージ (コンシューマがキューから受信して、キューから削除されていないもの) が存在する可能性があります。このクォータに達した場合、Amazon SQS はエラーメッセージを返信しません。FIFOキューは、最初の 20k メッセージを検索して、使用可能なメッセージグループを判別します。つまり、1 つのメッセージグループにメッセージのバックログがある場合、バックログからメッセージを正常に消費するまで、後からキューに送信された他のメッセージグループからのメッセージを使用することはできません。

注記

コンシューマーがメッセージを正常に処理できないために、同じメッセージグループ ID を持つメッセージのバックログが構築される場合があります。メッセージ処理の問題は、メッセージの内容に関する問題、またはコンシューマーに関する技術的な問題が原因で発生する可能性があります。

繰り返し処理できないメッセージを移動し、同じメッセージグループ ID を持つ他のメッセージの処理のブロックを解除するには、デッドレターキューポリシーを設定することを検討してください。

仮想キューでの同じメッセージグループ ID の再使用を避ける

同じホストキューを持つ異なる仮想キューに送られた同じメッセージグループ ID を持つメッセージが互いにブロックされるのを防ぐために、仮想キューで同じメッセージグループ ID をに再使用しないようにしてください。