サーバレス
serverless
SQS
SQSの選択
SQSはポーリングのキューイングサービスに使用される。
コマンドのようなものを使う
似たものと比較
Amazon MQ
標準的なプロトコルを使う場合で、他の物をAWSに移行する場合に使用
JMS, NMS, AMQP, STOMP, MQTT, WebSocketなど
Amazon SNS
pub/subメッセージングのサービス。
メール通知やプッシュ通知に対応
Amazon SES
アプリから大規模にメール配信機能などを使う場合に使用
Kinesis Data Streams
5MBなどある程度容量のあるデータを送信する。
SQSの特徴
ポーリング型のキューイングサービス
標準キューは順番が保証されないが、FIFOは順番を保証する
優先キューは他よりも優先することが可能
メッセージ保持期間を超過すると削除される
発行したメッセージはキャンセル不可
配信ポリシーによりキューの再試行を実施
Producer / Consumer
Producerが送信側
SQSにより中継される。
ConsumerがPollingによりメッセージ有無を確認する。
その他の特徴
メッセージ数は制限なし
メッセージサイズは最大256KB
拡張クライアントライブラリをしようすれば、2GBまで可能
Dequeueは一度に10件まで受信可能
メッセージ保持期間はデフォルト4日間
60秒~14日で設定可能
APIを使ってメッセージを削除しないかぎり、メッセージは処理済みでも保持される。
そのため処理済みのキューは、DeleteMessageAPIを実行する必要がある。
キューのタイプ
標準キュー
メッセージの 1 つ以上のコピーが順序どおりに配信できないことがある。
メッセージが少なくとも 1 回配信される方式であり、キューには重複が発生する可能性がある。
1 秒あたりのトランザクション数はほぼ無制限
標準キューは、アプリケーションが 1 回以上に順序 が正確ではなくても配信されれば良いケースで利用する。
FIFOキュー
先入れ先出し方式( FIFO )により配信 順番を守る。
メッセージが 1 回だけ配信され、コンシューマがプロセスを処理して削除するまで使用可能なキューの状態を保つため、キューに重複がない。
1 秒あたり 300 トランザクションに制限
FIFO キューは、操作やイベントの順序が重要である場合や、重複を許容できないユースケースに利用する。
SQSの識別子
識別子は必要に応じて使い分ける
キューURL
メッセージID
メッセージグループID
グループ内で順序が維持される
グループ毎にコンシューマーを分けることも可能
可視性タイムアウト
処理を担当するインスタンス以外からは一定時間キューが見えなくなる機能
他のコンシューマーが同じメッセージを再処理しないようにすることが可能。
スポットインスタンスを利用している場合に効果的
30秒~12時間で設定可能
ポーリング方式
ショートポーリング
ロングポーリング
メッセージがない場合でも待機時間を0~20秒で設定
空のレスポンスを削減できる
キュータイプ
遅延キュー
新しいメッセージの配信を遅延させることができる機能
0秒~15分で設定
優先度付きキュー
キューに優先度をつけることができる
デッドレターキュー
正常に処理できなかったキューを別のキューとして移動させる
処理不能なキューの蓄積を防ぎ、後で処理できなかった理由を解析できる
一時キュー
高スループットでコスト効率に優れたアプリケーション向けに使用
説明はよくわからんよ??
キューの詳細設定
メッセージ重複排除ID
FIFOのみで利用する
送信データの暗号化
メッセージタイマー
メッセージ毎に遅延を指定できる
遅延キューはキュー全体であり、この設定は遅延キューよりも優先される。
Last updated