はじめに
DVAの認定試験勉強用にAmazon SQSについて、メモとして残したいと思います。
SQSの概要
メッセージのキューサービス。
Lambdaなどのサービスからメッセージを送信し、キューに格納後、別のサービスでメッセージを取得して後続処理の実施が可能。
SNSとSQSの違い
公式ドキュメントにサービスの違いについての記載がある。
SNS
メッセージなどの通知を行うサービス。
Publisher(発行者)とSubscriber(購読者)の間に入り、Publisherが発行したメッセージや通知をSubscriberに配信する。
Amazon SNS の使用、配信者から受信者 (または生産者から消費者) へのメッセージ配信を提供するマネージドメッセージングサービスです。発行者は、論理アクセスポイントおよび通信チャネルであるトピックにメッセージを送信することで、受信者と非同期的に通信します。クライアントは、Amazon SQS、HTTP、E メール、モバイルプッシュ通知、モバイルテキストメッセージ (SMS) Amazon Kinesis Data Firehoseなどのサポートされたエンドポイントを使用して Amazon SNS トピックにサブスクライブし発行されたメッセージを受信できます。
SQS
メッセージのキューイングを行い、入ってきたメッセージを他のサービスに連携して、疎結合を実現する。
入ってくるデータの順序は順序が保証されるFIFOを選択することが可能。
Amazon SQS の使用、分散されたソフトウェアシステムとコンポーネントを統合および分離できる、分散されたソフトウェアシステムとコンポーネントを統合および分離できる、ホストされたキューを提供するマネージドサービスです。
キューの種類
種類 | 配信順序 | 配信方式 | スループット | 料金 | デフォルト |
---|---|---|---|---|---|
スタンダードキュー | 保証しない | 少なくても1回 | ほぼ無制限 | - | ○ |
FIFOキュー | 保証する | 1回 | 最大300件/秒 | スタンダードキューより高い | - |
大事な用語
- メッセージ重複排除ID
- メッセージグループ ID
- 受信リクエスト試行ID
- シーケンス番号
ポーリング方式
キューの状態を監視する方式のこと。
ショートポーリングはサーバーの一部をサンプリングし、すぐに応答を返す。
ショートポーリングとすると、ReceiveMessageリクエストは、サーバーのサブセット (加重ランダム分散に基づく) のみを照会し、レスポンスに含めることができるメッセージを検索します。Amazon SQS は、クエリでメッセージが見つからなかった場合でも、すぐにレスポンスを送信します。
ロングポーリングはすべてのサーバーに問い合わせをし、待機時間の経過後に応答を返す。
ロングポーリングとすると、ReceiveMessagerequest は、すべてのサーバーにメッセージを問い合わせます。Amazon SQS は、最小 1 つからリクエストで指定された最大メッセージ数まで、使用可能なメッセージを収集した後、レスポンスを送信します。Amazon SQS は、ポーリングの待機時間が経過した場合にのみ空の応答を送信します。
遅延キュー
メッセージの配信を遅延せるかどうか。
遅延キューを設定するとコンシューマーが取得可能になるまでの時間を設定できる。
- メッセージタイマー
特定のメッセージのみを遅延させたい場合はこちらを使用する。遅延キューと同時に設定されている場合はメッセージタイマーが優先される。
可視性タイムアウト
設定することにより、他のコンシューマーが同じメッセージを処理することを防ぐことができる。
同一のメッセージを他のコンシューマーから見えないくしたい場合に設定する。
デッドレターキュー
処理が失敗したメッセージなどがキューに居続けることを防止する。
原因などを別のキューに移すことにより、エラーの原因の調査を行いやすくする。
自動で作成されたりはしないので、最初にキューを作成する必要がある。
メッセージの削除
コンシューマーがメッセージを取得し、処理が完了してもキュー内のメッセージは削除されない。
キュー内のメッセージを削除する設定を行う必要がある。