【AWS】Amazon SQS ~ 基礎知識編 ~

■ はじめに

AWS提供のメッセージキューイングサービスである
Amazon Simple Queue Service (SQS) について、メモ。

目次

【1】Amazon Simple Queue Service (SQS)
【2】SQSの機能
 1)キュー管理
 2)メッセージ管理
【3】キューの種類
 1)Standardキュー
 2)FIFOキュー
【4】キューのメッセージ取得方法
 1)ショートポーリング(Short Polling)
 2)ロングポーリング(Long Polling)
【5】可視性タイムアウト(Visibility Timeout)
【6】メッセージ配信時間の制御方法
 1)遅延キュー(Delay Queue)
 2)メッセージタイマー(Message Timers)
【7】デッドレターキュー(Dead Letter Queue)
 1)設定値
【8】使用上の注意
 1)メッセージサイズ
【9】サンプル

【1】Amazon Simple Queue Service (SQS)

* フルマネージメントなメッセージキューイングサービス

ちなみに

* AWS最古(2004年)のサービス(2006年のS3, EC2より古い)

【2】SQSの機能

1)キュー管理
2)メッセージ管理

1)キュー管理

* キュー作成・削除
* 動作属性などの詳細設定

2)メッセージ管理

* キューに対するメッセージ送信・取得
* 処理済みのメッセージの削除

【3】キューの種類

1)Standardキュー
2)FIFOキュー << こっちの方が使いやすい

1)Standardキュー

* メッセージの配信順序が保証されていない
 => ベストエフォート型の順序付け
* 同一のメッセージを2回配信される可能性あり
 => 冪等性を保証する作りにする必要がある

2)FIFOキュー

* メッセージの配信順序が保証されている
* 「1)Standardキュー」の2重取得問題は解消

「1)Standardキュー」より劣っている点

* 秒辺りの処理件数は劣る
 => 配信順序を保証しているため
Standardキュー FIFOキュー
1秒当たりのトランザクション数(TPS) ほぼ無制限 バッチ処理なし:300件。バッチ処理あり:3000件

【4】キューのメッセージ取得方法

* 以下の2種類。

1)ショートポーリング(Short Polling) << デフォルト
2)ロングポーリング(Long Polling)

https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html

1)ショートポーリング(Short Polling)

* リクエストを受けるとメッセージの有無に関わらず
 即レスポンスを返す

2)ロングポーリング(Long Polling)

* メッセージがある場合、即レスポンスを返す
* キューの ReceiveMessageWaitTimeSeconds プロパティが
  0 より大きい値に設定されている場合、ロングポーリングが有効となる
* ReceiveMessage 要求に応答を送信する前に、
 メッセージが利用可能になるまでAmazon SQS の待機を許可することにより、
 空の応答数を減少させることができる
 => メッセージがない場合、設定されたタイムアウトまでレスポンスを返さない
 => API呼び出し回数を減らせるので、コスト節約できる

【5】可視性タイムアウト(Visibility Timeout)

* あるクライアントに送ったメッセージを
 処理中に別クライアントに
 同一メッセージを受け取らせないようにする仕組み
 => このタイムアウト値まで受信不可

https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html

1)設定値

* デフォルト:30秒
* 最小値: 0 秒
* 最大値:12時間

【6】メッセージ配信時間の制御方法

1)遅延キュー(Delay Queue)

* キューに送られたメッセージを一定時間見えなくする機能

2)メッセージタイマー(Message Timers)

* 個別のメッセージに対して、一定時間みえなくする機能

【7】デッドレターキュー(Dead Letter Queue)

* 処理できないメッセージを別のキューに移動する機能

https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html

【8】使用上の注意

1)メッセージサイズ

* メッセージの最大サイズ:256KB
 => 画像などの大きいサイズを扱いたい場合は、S3/DynamoDBなどに格納し
  そこへのアクセス情報(パスなど)を格納するといい

【9】サンプル

* 公式サイトのサンプルは、以下。

https://docs.aws.amazon.com/code-samples/latest/catalog/code-catalog-python-example_code-sqs.html

関連記事

AWS認定 ~ アソシエイト/ソリューションアーキテクト ~
https://dk521123.hatenablog.com/entry/2022/03/01/000000
Amazon SNS ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/06/03/175213