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 のメッセージを受信するようにリクエストすることはできません。

複数のメッセージグループ ID を持つ FIFO キューからメッセージを受信した場合、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 のメッセージはそれ以上返されません。