翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
以下の概念は、特にメッセージの順序付けとメッセージグループ ID を処理する場合に、Amazon SQS FIFO キューがメッセージの送受信を処理する方法を明確にします。 IDs
メッセージの送信
Amazon SQS FIFO キューは、一意の重複排除 IDs とメッセージグループ IDs。このトピックでは、グループ内で厳密な順序を維持するためのメッセージグループ IDs の重要性と、複数のプロデューサー間で信頼性の高い順序のメッセージ配信を確保するためのベストプラクティスについて説明します。
-
注文の保存
-
一意のメッセージ重複排除 IDs を持つ FIFO キューに複数のメッセージが連続して送信されると、Amazon SQS はそれらを保存し、送信を承認します。これらのメッセージは、送信された正確な順序で受信および処理されます。
-
-
メッセージグループ ID
-
FIFO キューでは、メッセージはメッセージグループ ID に基づいて順序付けられます。複数のプロデューサーまたはスレッドが同じメッセージグループ ID でメッセージを送信する場合、Amazon SQS はそれらが到着した順序で保存および処理されていることを確認します。
-
ベストプラクティス: 複数のプロデューサー間で厳密なメッセージ順序を保証するには、各プロデューサーからのすべてのメッセージに一意のメッセージグループ ID を割り当てます。
-
-
グループごとの順序付け
-
FIFO キューロジックは、メッセージグループ ID ごとに適用されます。
-
各メッセージグループ ID は、個別の順序付けられたメッセージのグループを表します。
-
メッセージグループ ID 内では、すべてのメッセージが厳密な順序で送受信されます。
-
異なるメッセージグループ IDsを持つメッセージは、互いに相対的に順不同で到着または処理される場合があります。
-
-
要件 - メッセージグループ ID を各メッセージに関連付ける必要があります。グループ ID なしでメッセージを送信すると、アクションは失敗します。
-
単一グループのシナリオ - すべてのメッセージを厳密な順序で処理する必要がある場合は、すべてのメッセージに同じメッセージグループ ID を使用します。
-
メッセージの受信
Amazon SQS FIFO キューは、バッチ処理、FIFO 順序の保証、特定のメッセージグループ IDs。このトピックでは、Amazon SQS が厳密な順序付けと可視性ルールを維持しながら、メッセージグループ IDs 間でメッセージを取得する方法について説明します。
-
バッチ取得
-
複数のメッセージグループ IDs、Amazon SQS は次のようになります。
-
1 回の呼び出しで、同じメッセージグループ ID でできるだけ多くのメッセージを返そうとします。
-
他のコンシューマーが、異なるメッセージグループ IDsからのメッセージを同時に処理できるようにします。
-
-
重要な明確化
-
同じメッセージグループ ID から複数のメッセージを 1 つのバッチで受信できます (
MaxNumberOfMessages
パラメータを使用して 1 回の呼び出しで最大 10 個のメッセージ)。 -
ただし、後続のリクエストでは、次の状態になるまで同じメッセージグループ ID から追加のメッセージを受信することはできません。
-
現在受信されているメッセージが削除される、または
-
それらは再び表示されます (可視性タイムアウトの期限が切れた後など)。
-
-
-
-
FIFO 注文保証
-
バッチで取得されたメッセージは、FIFO 順序をグループ内に保持します。
-
同じメッセージグループ ID で使用できるメッセージが 10 件未満の場合、Amazon SQS は同じバッチに他のメッセージグループ IDsからのメッセージを含めることができますが、各グループは FIFO 順序を保持します。
-
-
コンシューマーの制限事項
-
特定のメッセージグループ ID からのメッセージの受信を明示的にリクエストすることはできません。
-
複数回の再試行
プロデューサーとコンシューマーは、メッセージの順序を中断したり、重複したりすることなく、Amazon SQS FIFO キューで失敗したアクションを安全に再試行できます。このトピックでは、重複IDs と可視性タイムアウトによって再試行中にメッセージの整合性を確保する方法について説明します。
-
プロデューサーの再試行
-
SendMessage
アクションが失敗した場合、プロデューサーは同じメッセージ重複排除 ID を使用してメッセージを複数回送信を再試行できます。 -
重複排除間隔が期限切れになる前にプロデューサーが少なくとも 1 つの確認を受け取る限り、 は再試行します。
-
重複したメッセージは導入しないでください。
-
メッセージの順序を中断しないでください。
-
-
-
コンシューマーの再試行
-
ReceiveMessage
アクションが失敗した場合、コンシューマーは同じ受信リクエスト試行 ID を使用して必要な回数だけ再試行できます。 -
可視性タイムアウトが期限切れになる前にコンシューマーが少なくとも 1 つの確認を受け取る限り、 は再試行します。
-
メッセージの順序を中断しないでください。
-
-
FIFO 動作に関するその他の注意事項
可視性タイムアウトの処理、複数のメッセージグループ IDs による並列処理の有効化、単一グループシナリオでの厳密なシーケンシャル処理の保証について説明します。
-
可視性タイムアウトの処理
-
メッセージが取得されても削除されない場合、可視性タイムアウトが期限切れになるまで表示されません。
-
最初のメッセージが削除されるか、再び表示されるまで、同じメッセージグループ ID からの追加のメッセージは返されません。
-
-
同時実行と並列処理
-
FIFO キューを使用すると、さまざまなメッセージグループ IDs。
-
同時実行性を最大化するには、独立したワークフロー用に複数のメッセージグループ IDsを使用してシステムを設計します。
-
-
単一グループのシナリオ
-
FIFO キュー内のすべてのメッセージを厳密にシーケンシャル処理するには、キュー内のすべてのメッセージに単一のメッセージグループ ID を使用します。
-
理解を深めるための例
以下は、Amazon SQS での FIFO キューの動作を示す実用的なシナリオです。
-
シナリオ 1: 単一グループ ID
-
プロデューサーは、同じメッセージグループ ID グループ A を持つ 5 つのメッセージを送信します。
-
コンシューマーは、FIFO 順にこれらのメッセージを受信します。コンシューマーがこれらのメッセージを削除するか、可視性タイムアウトの有効期限が切れるまで、グループ A からの追加のメッセージは受信されません。
-
-
シナリオ 2: 複数のグループ IDs
-
プロデューサーは、グループ A に 5 つのメッセージを送信し、グループ B に 5 つのメッセージを送信します。
-
コンシューマー 1 はグループ A からのメッセージを処理し、コンシューマー 2 はグループ B からのメッセージを処理します。これにより、各グループ内で厳密な順序付けを維持して並列処理が可能になります。
-
-
シナリオ 3: バッチ取得
-
プロデューサーは、グループ A に 7 つのメッセージを送信し、グループ B に 3 つのメッセージを送信します。
-
1 つのコンシューマーが最大 10 個のメッセージを取得します。キューが許可する場合、以下を返すことがあります。
-
グループ A からの 7 つのメッセージとグループ B からの 3 つのメッセージ (1 つのグループから利用できるメッセージが少ない場合は少なくなります)。
-
-