キュータイプ

Amazon SQS では、異なるアプリケーション要件にあわせて 2 つのキュータイプを提供しています。

標準キュー

無制限のスループット: 標準キューは、API アクションあたり、ほぼ無制限の数の 1 秒あたりのトランザクション (TPS) をサポートします。

少なくとも 1 回の配信: メッセージは少なくとも 1 回は確実に配信されますが、複数のメッセージのコピーが配信されることもあります。

ベストエフォート型の順序付け: メッセージが送信されたときと異なる順序で配信されることがあります。

FIFO キュー

高スループット: デフォルトでは、FIFO キューは毎秒最大 300 件のメッセージをサポートします (毎秒送信、受信、または削除オペレーション 300 件)。オペレーションあたり 10 件のメッセージ (最大) というバッチ処理を実行する場合、FIFO キューは 1 秒あたり最大 3,000 件のメッセージをサポートできます。より高いスループットが必要な場合は、Amazon SQS コンソールで FIFO の高スループットモードを有効にすると、バッチ処理ありで 1 秒あたり最大 30,000 件のメッセージ、バッチ処理なしで 1 秒あたり最大 3,000 件のメッセージをサポートします。

正確な 1 回の処理: メッセージは一度配信されると、ユーザーがそれを処理して削除するまでは使用可能な状態に保たれます。キューでメッセージの重複が起きることはありません。

先入れ先出し配信: メッセージが送信または受信された順序が厳密に保持されます (先入れ先出し)。 

sqs-what-is-sqs-standard-queue-diagram
sqs-what-is-sqs-fifo-queue-diagram

乱れた順序で 1 回以上到着するメッセージをアプリケーションが処理できる限り、多くのシナリオで標準のメッセージキューを使用できます。例えば以下のような場合です。

  • 負荷の高いバックグラウンドの作業からライブユーザーリクエストを分離する: ユーザーはサイズ変更中またはエンコード中にメディアをアップロードできます。
  • 複数のワーカーノードにタスクを割り当てる: クレジットカードの検証リクエストを大量に処理します。
  • 今後の処理のためのバッチメッセージ: データベースに追加する複数のエントリをスケジュールします。

FIFO キューは、オペレーションやイベントの順序が重要である場合、または重複不可の場合などにアプリケーション間のメッセージングを強化します。たとえば、次のような場合です。

  • ユーザーが入力したコマンドが正しい順序で実行されていることを確認します。
  • 価格の変更を正しい順序で送信して、正しい製品価格を表示します。
  • アカウントを登録する前に受講者がコースに登録できないようにします。

機能

  • 無制限のキューおよびメッセージ: 任意のリージョンで無制限の数のメッセージを使用して無制限の Amazon SQS キューを作成します。
  • ペイロードサイズ: メッセージペイロードには、最大 256 KB のテキストを任意のフォーマットで含めることができます。ペイロードの 64 KB の「チャンク」が、1 つのリクエストとして課金されます。例えば、256 KB のペイロードを持つ単一の API コールは、4 件のリクエストとして課金されます。256 KB を超える大きさのメッセージを送信する場合、Java 用 Amazon SQS 拡張クライアントライブラリを使用できます。この場合、メッセージペイロードの保存に Amazon Simple Storage Service (S3) が使用されます。そのメッセージペイロードへの参照が SQS によって送信されます。
  • バッチ: 最大 10 通または 256 KB のメッセージ を一度に送信、受信、または削除できます。バッチの場合も、料金は単一メッセージと同じです。つまり、バッチを利用すると、SQS のコスト効果がさらに高くなる可能性があります。
  • ロングポーリング: 外部からのポーリングが削減されることで、コストを抑えながら新しいメッセージをできるだけ迅速に受信できます。キューが空の場合、ロングポーリングリクエストから次のメッセージが到着するまで、最大で 20 秒かかります。ロングポーリングリクエストのコストは、通常のリクエストと同額です。
  • 最大 14 日間メッセージをキューに保持します。
  • 同時にメッセージを送受信します。
  • メッセージのロック: 受信したメッセージが処理されている間は、「ロック」されます。これにより、他のコンピュータでメッセージが同時に処理されるのを防ぐことができます。処理に失敗すると、メッセージのロックは解除されるため、このメッセージは再び利用できるようになります。
  • キュー共有: 匿名で、または特定の AWS アカウントを使用して、Amazon SQS キューを安全に共有します。キューの共有は、IP アドレスや時刻によっても制限することができます。
  • サーバー側の暗号化 (SSE): AWS Key Management Service (AWS KMS) で管理されたキーを使用して、Amazon SQS キューのメッセージの内容を保護します。SSE では、Amazon SQS でメッセージを受信した時点ですぐに暗号化します。メッセージは暗号化された形式で保存され、Amazon SQS は許可された消費者に送信された場合のみメッセージを復号化します。
  • デッドレターキュー (DLQ): デッドレターキュー (DLQ) を持つコンシューマーによって正常に処理されなかったメッセージを処理します。メッセージの最大受信回数を超えると、Amazon SQS は元のキューと関連付けられている DLQ に移動されます。DLQ はソースキュー (標準または FIFO) と同じタイプである必要があります。DLQ のメッセージを調べると、コンシューマーがメッセージを正常に受信できなかった理由を理解できます。問題を修正したら、メッセージを DLQ からそれぞれのソースキューに移動できます。

Amazon SQS を他の AWS インフラストラクチャウェブサービスと共に使用する

Amazon SQS メッセージキューは、Amazon RedshiftAmazon DynamoDBAmazon Relational Database Service (RDS)Amazon Elastic Compute Cloud (EC2)Amazon Elastic Container Service (ECS)AWS LambdaSimple Storage Service (Amazon S3) などの他の AWS のサービスで使用できます。分散アプリケーションをよりスケーラブルで信頼性の高いものにします。以下に、一般的な設計パターンの例をいくつか示します。

  • ワーク キュー: 配信されたアプリケーションのコンポーネントから、同じ量の作業をすべて同時に処理することができないものを切り離します。
  • オペレーションのバッファリングとバッチ: アーキテクチャにスケーラビリティと信頼性を追加します。また、メッセージを失わず、低レイテンシーを維持したまま、一時的なボリュームスパイクを均一化します。
  • リクエストのオフロード: リクエストをキューに追加することによって、リクエストをキューに追加することによって、処理の遅いオペレーションをインタラクティブなリクエストパスから除外します。
  • ファンアウト: SQS と Simple Notification Service (SNS) とを組み合わせることで、同一のメッセージを複数のキューに並列的に送信します。
  • 優先順位: 業務の優先順位に応じた個別のキューを使用します。
  • スケーラビリティ: メッセージキューによってプロセス間が切り離されるため、メッセージの送信または受信速度のスケールアップも、プロセスを追加するのみという簡単なものになります。
  • 耐障害性: システムの一部に障害が発生しても、システム全体がダウンすることにはなりません。メッセージキューによってシステムのコンポーネントが切り離されるため、そのキューからメッセージを読み取り中のプロセスに障害が発生しても、そのキューへのメッセージ追加は継続でき、システム回復時に処理できます。

想定される使用目的と制約

このサービスのご利用には、アマゾン ウェブ サービスカスタマーアグリーメントが適用されます。

Amazon SQS 料金の詳細

料金ページを見る
構築の準備はできましたか?
Amazon SQS の利用を開始する
ご不明な点がおありですか?
お問い合わせ