簡単に言うと、同一の重複排除IDが設定されたメッセージをキューへ送っても5分間の間は受付けられないということです。
参考
Amazon SQS メッセージ重複排除 ID の使用
#■やってみる#
FIFOキューを選択し、「コンテンツに基づく重複削除」にチェックを入れる。
「コンテンツに基づく重複削除」にチェックを入れた場合。
→メッセージ重複削除IDの自前作成は不要になります。勝手にSHA256でハッシュ化して付与してくれます。
「コンテンツに基づく重複削除」にチェックを入れない場合。
→メッセージ重複削除IDの自前作成が必要となります。
#■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