AWS CLI + SQS の send/receive 操作
Contents
AWS CLI + SQS
概要
- aws cli を使用して、SQSキューにメッセージを送受信する確認を行った際の備忘録です。
- Amazon SQS(Amazon Simple Queue Service) は、フルマネージド型のメッセージキューイングサービスです。キューイングはいわゆる待ち行列のことです。
- キューイングを使用することで、AWS上の分散アプリケーションが疎結合で構成できます。アプリケーションがこれから処理する内容を一度キューに溜めることができ、順次任意のタイミング(非同期)に取り出して処理ができます。
キューの作成
- スタンダードのキューを作成します。
- キューを作成後、キューが使用できるようになるまで少なくとも 1 秒以上待つ必要があります。
- FIFO(先入れ先出し)のキューを作成します。キューの名前に
.fifo
を付けます。
キューの一覧
- queue-name-prefixオプションを指定すると、指定した文字列で始まる名前のキューのみが返されます。
キューの属性を確認する
- get-queue-attributesオプションを指定すると、キューのすべてあるいは一部の属性を返します。
- ApproximateNumberOfMessages の値から、メッセージの処理待ちがいくつあるか確認できます。
メッセージの送信
- 作成したスタンダードのキューにメッセージを送信します。ApproximateNumberOfMessages の値が 1に変わりました。
- 次は、作成したFIFOのキューにメッセージを送信します。FIFO の場合、MessageGroupId オプションの指定は必須です。同じMessageGroupId の場合にFIFOとして処理され、異なる場合は順序の保証はありません。
- MessageGroupId は128文字まで、英数字および記号(
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
)が使用可。
- MessageGroupId は128文字まで、英数字および記号(
- FIFO の場合、MessageDeduplicationId オプションの指定が可能です。送信されたメッセージの重複排除に使用可能です。同じメッセージMessageDeduplicationId (重複除外 ID)で送信されたメッセージは正常に受信しますが、5 分間の重複除外間隔においては配信されません。
- MessageDeduplicationId (重複除外 ID)は、個別のMessageGroupId ではなく、キュー全体に適用されます。
- MessageDeduplicationId は128文字まで、英数字および記号(
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
)が使用可。
メッセージの受信
- 指定されたキューから 1 つまたは複数 (最大 10) のメッセージを取得します。
可視性タイムアウト(VisibilityTimeout)
- コンシューマーからメッセージが受信された直後は、メッセージはキューに保留されたままです。他のコンシューマーが同じメッセージを再び処理しないようにSQSには可視性タイムアウトが設定されています。
- VisibilityTimeout に指定された秒数内では、他のコンシューマーによる同じメッセージの受信と処理が防止されます。デフォルトの可視性タイムアウトは30秒です。