FIFO配信ロジック - Amazon Simple Queue Service

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

FIFO配信ロジック

次の概念は、 FIFOから送信されるメッセージと受信されるメッセージをよりよく理解するうえで役立ちます。

メッセージの送信

複数のメッセージが連続してFIFOキューに送信され、それぞれに個別のメッセージ重複除外IDが付いている場合、 Amazon SQSはメッセージを保存し送信を認識します。その後、各メッセージを、送信された正確な順序で受信し処理できます。

FIFOキューでは、メッセージはメッセージグループ IDに基づいて順序付けられます。複数のホスト (または同一ホストの異なるスレッド) から同じメッセージグループ IDのメッセージがFIFOキューに送信された場合、Amazon SQSはメッセージを受信順に保存して処理を待ちます。Amazon SQSでメッセージが送信および受信された順序が確実に保持されるように、各プロデューサーはすべてのメッセージ送信で固有のメッセージグループIDを使用するようにしてください。

FIFOキューロジックはメッセージグループIDごとにのみ適用されます。各メッセージグループ ID は、 Amazon SQSキュー内の異なる順序付けされたメッセージグループを表します。メッセージグループIDごとに、すべてのメッセージが厳密な順序で送受信されます。ただし、異なるメッセージグループ ID値のメッセージは、送信および受信の順序が入れ替わる場合があります。メッセージグループIDをメッセージに関連付ける必要があります。メッセージグループIDを指定しない場合、アクションは失敗します。順序付けされたメッセージの単一グループが必要な場合は、FIFOキューに送信されるメッセージに同じメッセージグループ IDを指定します。

メッセージの受信

特定のメッセージグループIDのメッセージを受信するようにリクエストすることはできません。

FIFOキューから複数のメッセージグループIDを持つメッセージを受信した場合、Amazon SQSは最初に同じメッセージグループ IDを持つメッセージをできる限り多く返信するように試みます。こうすることで、他のコンシューマーが別のメッセージグループ IDを持つメッセージを処理できます。メッセージグループ ID があるメッセージを受信した場合、そのメッセージを削除しない、または表示されない限り、同じメッセージグループ ID のメッセージはそれ以上返されません。

注記

MaxNumberOfMessages アクションのReceiveMessageリクエストパラメータを使用した1回の呼び出しで最大10件のメッセージを受信できます。これらのメッセージには、FIFOの順序が保持され、同じメッセージグループ IDを持つことができます。したがって、同じメッセージグループ IDで使用可能なメッセージが10件未満の場合、別のメッセージグループ IDからメッセージを受信することがあります。10件のメッセージのバッチは同じですが、FIFOの順序は維持されます。

複数回の再試行

FIFOキューでは、プロデューサまたはコンシューマが複数の再試行を試みることができます:

  • プロデューサが障害を検出したSendMessageアクションがある場合、同じメッセージ重複除外 IDを使用して、必要な回数だけ送信を再試行できます。重複除外間隔の期限が切れる前にプロデューサが少なくとも1つの確認応答を受信すると仮定すると、複数回の再試行はメッセージの順序に影響せず、重複も発生しません。

  • コンシューマが障害を検出した場合ReceiveMessageアクションの場合、同じ受信リクエスト試行 IDを使用して、必要な回数だけ再試行できます。可視性タイムアウトの期限が切れる前にコンシューマが少なくとも1つの確認応答を受信すると仮定すると、複数回の再試行はメッセージの順序に影響しません。

  • メッセージグループ IDがあるメッセージを受信した場合、メッセージを削除するか、表示されない限り、同じメッセージグループ IDのメッセージはそれ以上返信されません。