ablog

不器用で落着きのない技術者のメモ

Amazon Simple Queue Service (SQS) を使ってみる

EC2 から AWS CLI で Simple Queue Service を使ってみる。

  • Access key ID、Secret access key、デフォルトリージョンを設定する。
$ 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 のことで、メッセージがからの場合指定秒数待って受信する
    • メッセージが受信できるようになると、指定秒数経過していなくてもメッセージを受信する
  • デッドレターキュー
    • 指定回数受信しても削除されないメッセージを別のキューに移動する機能