LoginSignup
3
2

More than 3 years have passed since last update.

Amazon SQSでキューが削除されない

Posted at

SQSをメッセージを受信してから、処理を行ってから、そのメッセージを削除するリクエストを送ったのですが、何度リクエストを送っても削除されませんでした。

以下は削除しているPHPのサンプルコードです

### Controller

        $messageList = $sqsService->receiveMessage(
            self::SQS_CONFIG['QueueUrl'],
            self::SQS_CONFIG['MaxNumberOfMessages'],
            self::SQS_CONFIG['AttributeNames']
        );

        if (is_array($messageList) === true) {
            foreach ($messageList as $message) {

                ...

                // SQSのメッセージを削除する
                $sqsService->deleteMessage(self::SQS_CONFIG['QueueUrl'], $message['ReceiptHandle']);
            }
        }

### sqsService

    function deleteMessage($queueUrl, $receiptHandle)
    {
        $result = null;

        try {
            $client = SqsClient::factory(self::CONFIG);
            $result = $client->deleteMessage([
                'QueueUrl' => $queueUrl,
                'ReceiptHandle' => $receiptHandle,
            ]);
        } catch (Exception $e) {
            var_dump($e->getMessage());
        }

        return $result;
    }

ググったところ、以下のstack overflowが見つかりました。
https://stackoverflow.com/questions/10194293/sqs-messages-not-deleting

キューの設定値 defaultVisibilityTimeout0で設定されている場合に削除が行えないようです。
SQSのコンソールから、以下のように値を変更します。

f5d3bd78d48ed9ee6a3d349aa4f89b34.jpg

これで消えるようになりました。
ご参考までに。

3
2
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
3
2