Amazon Simple Queue Service
開発者ガイド

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

メッセージグループ ID は 特定のメッセージグループに属するメッセージを指定するタグ。同じメッセージグループに属するメッセージは、メッセージグループに相対的な厳密な順序で、常に 1 つずつ処理されます (ただし、別のメッセージグループに属するメッセージは、入れ替わって処理される場合があります)。 です

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

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

注記

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

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

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

注記

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

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

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

同じメッセージグループ ID を持つ 20,000 件以上のメッセージを含む大きなバックログがキューにある場合、FIFO キューは、異なるメッセージグループ ID を持つが、バックログからメッセージを正常に消費するまで、後からキューに送信されたメッセージを返すことができない可能性があります。

注記

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

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