FIFO トピックのメッセージ順序の詳細 - Amazon Simple Notification Service

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

FIFO トピックのメッセージ順序の詳細

Amazon SNS FIFO トピックは、常に、メッセージがトピックに発行されるのとまったく同じ順序で、サブスクライブされた Amazon SQS FIFO キューにメッセージを 1 回だけ配信します。Amazon SQS FIFO キューをサブスクライブすると、キューのコンシューマーは、メッセージがキューに配信されるのとまったく同じ順序で、メッセージを重複することなく受信します。ただし、 SQS 標準キューをサブスクライブすると、キューのコンシューマーはメッセージを順序どおりではなく、さらに重複して受信する可能性があります。これにより、サブスクライバーをパブリッシャーからさらに切り離すことができ、次の図に示すように、「FIFO トピックのユースケース例」に基づいて、サブスクライバーはメッセージの使用とコストの最適化をより柔軟に行うことができます。


      自動車部品 e コマースプラットフォームで厳密に順序付けされたメッセージ配信。

サブスクライバーの暗黙の順序付けはないことに注意してください。次の例は、メッセージ m1 が卸売サブスクライバー、小売サブスクライバー、分析サブスクライバーの順に配信されることを示しています。メッセージ m2 は、小売サブスクライバー、卸売サブスクライバー、分析サブスクライバーの順に配信されます。2 つのメッセージは異なる順序でサブスクライバーに配信されますが、メッセージの順序は Amazon SQS FIFO サブスクライバーごとに保持されます。各サブスクライバーは、他のサブスクライバーとは切り離して認識されます。


      各サブスクライバーに対して厳密に順序付けされたメッセージ配信。

Amazon SQS キューサブスクライバーが到達不能になると、同期が失われる可能性があります。例えば、卸売アプリケーションキュー所有者が誤って Amazon SQS キューポリシーを変更し、Amazon SNS サービスプリンシパルがメッセージをキューに配信できなくなったとします。この場合、卸売キューへの価格更新配信は失敗し、小売キューと分析キューへの配信は成功するため、サブスクライバーは同期しなくなります。卸売アプリケーションキュー所有者がキューポリシーを修正すると、Amazon SNS はサブスクライブされたキューへのメッセージ配信を再開します。対応するサブスクリプションにデッドレターキューが設定されていない限り、誤設定されたキューを対象とするトピックに発行されたメッセージはすべてドロップされます。


      卸売キューサブスクライバーは、一時的に到達不能になります。

複数のアプリケーション (または同じアプリケーション内の複数のスレッド) で、SNS FIFO トピックにメッセージを並行して発行できます。これを行うと、メッセージシーケンスを Amazon SNS サービスに効果的に委任します。確立されたメッセージのシーケンスを決定するには、シーケンス番号を確認します。

シーケンス番号は、Amazon SNS が各メッセージに割り当てる、連続しない大きな数字です。シーケンス番号の長さは 128 ビットで、メッセージグループごとに増え続けます。シーケンス番号は、メッセージ本文の一部として、サブスクライブされた Amazon SQS キューに渡されます。ただし、raw メッセージ配信を有効にすると、Amazon SQS キューに配信されるメッセージには、シーケンス番号やその他の Amazon SNS メッセージメタデータは含まれません。


      Amazon SNS は、各メッセージに一意のシーケンス番号を割り当てて、シーケンス番号を Amazon SQS に渡します。

Amazon SNS FIFO トピックは、メッセージグループのコンテキストで順序を定義します。詳細については、「FIFO トピックのメッセージのグループ化」を参照してください。