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
キューの設定値 defaultVisibilityTimeout
が0
で設定されている場合に削除が行えないようです。
SQSのコンソールから、以下のように値を変更します。
これで消えるようになりました。
ご参考までに。