EC2 から AWS CLI で Simple Queue Service を使ってみる。
$ aws configure
- キューを作成する
$ aws sqs create-queue --queue-name TestQueue { "QueueUrl": "https://queue.amazonaws.com/[AWSアカウントID]/TestQueue" }
- キューをリスト表示する
$ aws sqs list-queues { "QueueUrls": [ "https://queue.amazonaws.com/[AWSアカウントID]/TestQueue" ] }
- メッセージを送信する
$ aws sqs send-message --queue-url "https://queue.amazonaws.com/[AWSアカウントID]/TestQueue" --message-body "Test Message 1" --delay-seconds 60 { "MD5OfMessageBody": "822ab0ae9c911379dabe828d4e3936a7", "MessageId": "c97512ef-fef8-4c08-83b9-4b5995f3d4b0" }
- メッセージを受信する
$ aws sqs receive-message --queue-url "https://queue.amazonaws.com/[AWSアカウントID]/TestQueue" --visibility-timeout 60 --wait-time-seconds 20 { "Messages": [ { "Body": "Test Message 1", "ReceiptHandle": "AQEBT24UeHzq5UzYOtLaxV6qD+uiYILzefa5XIK7hd77gz84a3Q/2m9iebOAR8wJHR54h9Wd6NxNJQz5S40q9fygGI4eXwUonoEcYUYCvhxIQmjZlwSWhlwggM4s2MS9/HK3nTDiWro2J33pZ0Jutmf/H3t0dhNGhKqDpbTd7qpsX8LEHFdyrafXxJ818XGOn+imz0DVQ5jGfQShtB5lpFLfuLFUzj3MFpBqeO3w57NJxh7ltByvzxOrZxpIb6EPhD31GIuvY3eAav65Y33fDL7IMXn0yXNj9+0oaMpGAyGheaCocrQ6GggorES2Uk10MxCtGNpvG01sdoi6/flfmGzp7FM0llbUEMpWzMfgjm++4htFKFCo/nFCVAynwka49Ix4", "MD5OfBody": "822ab0ae9c911379dabe828d4e3936a7", "MessageId": "c97512ef-fef8-4c08-83b9-4b5995f3d4b0" } ] }
- メッセージを削除する
$ aws sqs delete-message --queue-url "https://ap-northeast-1.queue.amazonaws.com/[AWSアカウントID]/TestQueue" --receipt-handle "AQEBT24UeHzq5UzYOtLaxV6qD+uiYILzefa5XIK7hd77gz84a3Q/2m9iebOAR8wJHR54h9Wd6NxNJQz5S40q9fygGI4eXwUonoEcYUYCvhxIQmjZlwSWhlwggM4s2MS9/HK3nTDiWro2J33pZ0Jutmf/H3t0dhNGhKqDpbTd7qpsX8LEHFdyrafXxJ818XGOn+imz0DVQ5jGfQShtB5lpFLfuLFUzj3MFpBqeO3w57NJxh7ltByvzxOrZxpIb6EPhD31GIuvY3eAav65Y33fDL7IMXn0yXNj9+0oaMpGAyGheaCocrQ6GggorES2Uk10MxCtGNpvG01sdoi6/flfmGzp7FM0llbUEMpWzMfgjm++4htFKFCo/nFCVAynwka49Ix4"
- キューを削除する。
$ aws sqs delete-queue --queue-url "https://queue.amazonaws.com/[AWSアカウントID]/TestQueue"
- キューが削除されたことを確認する。
$ aws sqs list-queues
備忘録
SQSで利用する識別子
- Queue URL
- キューを作成すると払い出される URL
- https://sqs.リージョン名.amazonaws.com/アカウントID/キュー名
- Message ID
- システムで割当られたID
- Receipt Handle(受信ハンドル)
- メッセージの削除や可視性の変更では、受信ハンドルを指定する必要がある
主な機能
- Delay Queue(遅延キュー)
- キューに送られた新しいメッセージを一定期間見えなくする(0〜900秒)
- キュー自体に設定し、そのキューを使う全てのメッセージに適用される
- Message Timer
- Delay Queue と同じことをメッセージレベルで設定する
- Visibility Timeout
- 受信後、一定期間メッセージを見せない(デフォルト30秒、最大12時間)
- バッチ送信/受信
- 最大10件まとめて送信/受信できる
- ロングポーリング(0〜20秒)
- WaitTimeSeconds > 0 のことで、メッセージがからの場合指定秒数待って受信する
- メッセージが受信できるようになると、指定秒数経過していなくてもメッセージを受信する
- デッドレターキュー
- 指定回数受信しても削除されないメッセージを別のキューに移動する機能