ablog

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

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

  • Dead Letter キューを作成する
$ cat sqs-dlq.json
{
  "DelaySeconds":"10",
  "MessageRetentionPeriod":"1209600",
  "ReceiveMessageWaitTimeSeconds":"20",
  "VisibilityTimeout":"30"
}
$ aws sqs create-queue --queue-name DeadLetterQueue1 --attributes file://sqs-dlq.json 
{
    "QueueUrl": "https://ap-northeast-1.queue.amazonaws.com/<ユーザーID>/DeadLetterQueue1"
}
  • Dead Letter キューの ARN を確認する
$ aws sqs get-queue-attributes --attribute-names QueueArn --queue-url https://ap-northeast-1.queue.amazonaws.com/<ユーザーID>/DeadLetterQueue1
{
    "Attributes": {
        "QueueArn": "arn:aws:sqs:ap-northeast-1:<ユーザーID>:DeadLetterQueue1"
    }
}
  • キューを作成する
$ cat sqs-queue.json
{
  "DelaySeconds":"10",
  "MessageRetentionPeriod":"1209600",
  "ReceiveMessageWaitTimeSeconds":"20",
  "VisibilityTimeout":"30",
  "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:ap-northeast-1:<ユーザーID>:DeadLetterQueue1\",\"maxReceiveCount\":\"1000\"}"
}
$ aws sqs create-queue --queue-name Queue1 --attributes file://sqs-queue.json
{
    "QueueUrl": "https://ap-northeast-1.queue.amazonaws.com/<ユーザーID>/Queue1"
}
  • メッセージを 1000 件登録する。
$ for i in {1..1000}
do
aws sqs send-message --queue-url "https://ap-northeast-1.queue.amazonaws.com/<ユーザーID>/Queue1"  --message-body "Test Message $i"
done > sqs_send1000.log
  • メッセージ数を確認する。
$ aws sqs  get-queue-attributes --attribute-names ApproximateNumberOfMessages --queue-url https://ap-northeast-1.queue.amazonaws.com/<ユーザーID>/Queue1
{
    "Attributes": {
        "ApproximateNumberOfMessages": "1000"
    }
}
  • メッセージを受信する。
$ aws sqs receive-message --max-number-of-messages 10 --queue-url https://ap-northeast-1.queue.amazonaws.com/<ユーザーID>/Queue1 --visibility-timeout 60 --wait-time-seconds 20

{
    "Messages": [
        {
            "Body": "Test Message 33",
            "ReceiptHandle": "AQEBtIprTOVjUxOU06ebxCxVW3eWJ1QLlhAcptnne1OfyiH0Oh7dikEJ0cJgRAoFg1MrUUMGGbD93AZHozrW6lW5kLUfb83VT82u/kBL5aEyxVPTee/m5Y58a+4fgsd2b2igXTGCoGJGqsROODKB7hKwmza4s9jmrlMRCZqBdrlMywVO4WYkHuyiiKT4myvYkLaztx1vszRl/YtEejb0ZzVq96045zpGojTMF7UvGlpXdm4WbCbFdgAoCXi8zw2b/e/SkAjxB/iZyXzP2PSrlMoMDFQ2pEaW5f0HL2yvUGxJTrH2fbqcceRqE6O65UHHnwZOavVZHQimDj2osu1Loom043JLNNYXCTsPL/vfdPkhilpQRXRaSUnAHquzk1vL5RlI4Zr8+Da4kBHIcUHmpOZyjQ==",
            "MD5OfBody": "5ba0f9d4c06aeabf176b026ea0bd2301",
            "MessageId": "2572874c-2459-47b8-b81e-1c79211563b4"
        },

(中略)

        {
            "Body": "Test Message 96",
            "ReceiptHandle": "AQEBHWroUeQWg5Sm7Civr7YB3/jl1JYtF+AXIaUSVqJd8wWfkOgeBbzYNOl7rU+RbtTYqejVRdRvvmtN8WFF2pSw+c7khfG1v4uJCXsx30nRYv5eQ6n1vtWzXV62G93phCXH6IrIPOYRkbqSgVDjO3ReGfCcaskPn9roXwyevwg3Uq0sUYTeJBFhQJoLV8jKZWBR3VVGFBT+1WUlL0k2BfA8slfQCcb7tjsnEbITdMORgAf1UT80pUAaEpsKXgG2Y1kNtOigKB4Rzynwe6IIiT1Eu+efUHNLZQSHXkxywIYvAccBbMZ84p6G5WxKDZAdZZk1bh41ngXapfsrDeKxQ0JxVSroL0qrIf5QYvtSCFWemDA1vCyUBfrzV15BAce3EVeEZA5oUM4HbbV7kvOkkYXqOw==",
            "MD5OfBody": "405d70b218eabb65c9e3c31cfe98d66c",
            "MessageId": "9ed2afb9-552f-499d-8ebd-9df904e7e202"
        }
    ]
}
  • メッセージをパージ(全て削除)する
$ aws sqs purge-queue --queue-url "https://ap-northeast-1.queue.amazonaws.com/<ユーザーID>/Queue1"