LoginSignup
9
8

More than 3 years have passed since last update.

SQS - FIFOキューの重複排除ID

Last updated at Posted at 2019-12-17

簡単に言うと、同一の重複排除IDが設定されたメッセージをキューへ送っても5分間の間は受付けられないということです。

参考
Amazon SQS メッセージ重複排除 ID の使用

■やってみる

FIFOキューを選択し、「コンテンツに基づく重複削除」にチェックを入れる。
image.png

「コンテンツに基づく重複削除」にチェックを入れた場合。
→メッセージ重複削除IDの自前作成は不要になります。勝手にSHA256でハッシュ化して付与してくれます。
image.png

「コンテンツに基づく重複削除」にチェックを入れない場合。
→メッセージ重複削除IDの自前作成が必要となります。
image.png

■CLIからテストしてみる1

1件メッセージを送る。

$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --message-body hello10 --message-group-id group10
{
    "MD5OfMessageBody": "75628fce248a7e55e27335a60900ebab",
    "SequenceNumber": "18850343785178351616",
    "MessageId": "30d4d2ee-286d-40e9-ada0-ad5936236d56"
}

同じものを時間をおかず1件送る。

$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --message-body hello10 --message-group-id group10
{
    "MD5OfMessageBody": "75628fce248a7e55e27335a60900ebab",
    "SequenceNumber": "18850343785178351616",
    "MessageId": "30d4d2ee-286d-40e9-ada0-ad5936236d56"
}

カウントしてみる。メッセージを2件入れたが、MessageId が同じだったので後から入ったものが削除され、1であることがわかる。

$ aws sqs get-queue-attributes --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --attribute-names ApproximateNumberOfMessages
{
    "Attributes": {
        "ApproximateNumberOfMessages": "1"
    }
}

5分開けて再度おくってみる。

$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --message-body hello10 --message-group-id group10
{
    "MD5OfMessageBody": "75628fce248a7e55e27335a60900ebab",
    "SequenceNumber": "18850343963418863872",
    "MessageId": "eba22523-2b07-45ee-ad14-32cb5ddc6132"
}

MessageIdが異なるので1であることがわかる。

$ aws sqs get-queue-attributes --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --attribute-names ApproximateNumberOfMessages
{
    "Attributes": {
        "ApproximateNumberOfMessages": "2"
    }
}

■CLIからテストしてみる2

異なるbodyで、同じIDを使ってみる。

$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --message-body hello100 --message-group-id group10
{
    "MD5OfMessageBody": "9a7108cfaa7f51efb5fcda9e9d4b7a90",
    "SequenceNumber": "18850344016894191872",
    "MessageId": "1d4bc1d6-004f-4047-8060-9dc75b47c753"
}

$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --message-body hello200 --message-group-id group10
{
    "MD5OfMessageBody": "8d8ad303395dbd8d097a570c37000394",
    "SequenceNumber": "18850344018367215616",
    "MessageId": "6ed49a50-3b20-463e-9908-30c2e7f3e74d"
}

$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --message-body hello300 --message-group-id group10
{
    "MD5OfMessageBody": "47d529b39d63df9f74aec6f33bab4fb4",
    "SequenceNumber": "18850344020316911616",
    "MessageId": "e7072129-a8d0-44f1-9b16-70037828ac50"
}

今度は先程のとあわせて5になっていることがわかります。

$ aws sqs get-queue-attributes --queue-url https://sqs.ap-northeast-1.amazonaws.com/12345678901/test.fifo --region ap-northeast-1 --attribute-names ApproximateNumberOfMessages
{
    "Attributes": {
        "ApproximateNumberOfMessages": "5"
    }
}

■リンク

Amazon SQS

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8