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 を持つメッセージを処理できます。

注記

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

複数回の再試行

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

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

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

  • メッセージグループ ID を持つメッセージを受信すると、メッセージを削除するか、メッセージが表示されない限り、同じメッセージグループ ID のメッセージは返されません。