翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SQS の FIFO キュー配信ロジック
以下の概念では、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 内およびメッセージグループ ID 間でメッセージを取得する方法について説明します。
- 
                    バッチ取得 - 
                            複数のメッセージグループ 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 つのグループから利用できるメッセージが少ない場合はそれ以下)。 
 
- 
                                    
 
-