Amazon Simple Queue Service
開発者ガイド

Amazon SQS スタンダード キュー

Amazon SQS は、デフォルトのキュータイプとして「スタンダード」を提供します。スタンダード キューは、 アクションあたり、ほぼ無制限の数の 1 秒あたりのトランザクション (TPS) をサポートできます。 スタンダード キューは、少なくとも 1 回のメッセージ配信をサポートします。ただし、ときとして (ほぼ無制限のスループットが可能な高分散アーキテクチャであるために) メッセージの複数のコピーが順不同で配信されることがあります。スタンダード キューは、全般的にメッセージが送信順に配信されるベストエフォート型の順序を提供します。サーバー側の暗号化 の有無にかかわらず、AWS マネジメントコンソール、AWS SDK for Java (および CreateQueue アクション)、または AWS CloudFormation を使用して、スタンダード キューを作成する方法については、 キューの作成 および を使用してキューを作成する を参照してください。

アプリケーションが、順不同で複数回到達するメッセージを処理できる限りは、多くのシナリオで スタンダード メッセージキューを使用できます。

  • 負荷の高いバックグラウンドの作業からライブユーザーリクエストを分離します – ユーザーはサイズ変更またはエンコード中にメディアをアップロードできます。

  • 複数のワーカーノードにタスクを割り当てます – 大量のクレジットカードの検証リクエストを処理します。

  • 今後の処理のためのバッチメッセージ – データベースに追加する複数のエントリをスケジュールします。

スタンダード キューを使用した作業のベストプラクティスについては、「Amazon SQS スタンダード および FIFO (先入れ先出し) キューの推奨事項 」を参照してください。

メッセージの順序

スタンダード キューでは、できる限りメッセージの順序を保持しますが、複数のメッセージのコピーが順不同で配信される場合があります。ご使用のシステムで順序の保持が必須の場合は、FIFO (先入れ先出し) キュー を使用するか、各メッセージに順序付け情報を追加して、受信時にメッセージを並べ直せるようにすることをお勧めします。

少なくとも 1 回の配信

Amazon SQS では、冗長性と高可用性を確保するため、メッセージのコピーが複数のサーバーに保存されます。まれではありますが、メッセージを受信または削除するときに、メッセージのコピーが保存されているサーバーの 1 台が使用できない場合があります。

この場合、使用できないサーバーではメッセージのコピーが削除されず、メッセージの受信時に、そのメッセージコピーをもう一度受け取る場合があります。アプリケーションがべき等になるよう設計する必要があります (同じメッセージを繰り返し処理した場合にも悪影響が発生しないように設計する必要があります)。

ショートポーリングを使用したメッセージの処理

キューからのメッセージを処理するプロセスは、ショートポーリング (デフォルトの動作) を使用するか、ロングポーリングを使用するかによって異なります。ロングポーリングの詳細については、「Amazon SQS ロングポーリング」を参照してください。

ショートポーリングを使用してキューからのメッセージを処理する場合、Amazon SQS によりサーバーのサブセットがサンプリングされ (重み付けされたランダム分散に基づいて)、それらのサーバーのメッセージだけが返されます。したがって、ある受信リクエストによってすべてのメッセージが返されないことがあります。ただし、キューにあるメッセージが 1000 未満の場合、後続のリクエストではメッセージが返されます。キューから処理し続けた場合、Amazon SQS によりすべてのサーバーがサンプリングされ、すべてのメッセージを受信します。

次の図は、システムコンポーネントの 1 つが受信リクエストを生成すると スタンダード キューからメッセージが返されるショートポーリングの動作を示しています。Amazon SQS は、複数のサーバー (灰色) をサンプリングし、それらのサーバーからメッセージ A、C、D、および B を返します。メッセージ E はこのリクエストに返されませんが、後続のリクエストには返されます。


		            ショート (標準) ポーリングを使用したメッセージのサンプリング