Мне необходимо написать скрипт, который бы подключался к RabbitMQ, обрабатывал все сообщения в очереди а затем удалял эту очередь, закрывал соединение и скрипт прекращал свое выполнение.
Мне НЕ нужно постоянно слушать эту очередь и ждать новых сообщений.
Нужно только обработать те сообщения, которые уже есть в очереди, и завершить работу скрипта.
Я написал следеющий скрипт, он успешно обрабатывает все сообщения в очереди, однако продолжает ожидать новых сообщений, хотя в очереди, уже нет сообщений.
<?php
$queue = 'my_queue';
$connection = new AMQPStreamConnection('rabbitmq', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare($queue, false, true, false, false);
$callback = function (AMQPMessage $msg) {
echo json_decode($msg->body, true);
$msg->ack();
};
$channel->basic_qos(null, 1, null);
$channel->basic_consume($queue, '', false, false, false, false, $callback);
while (count($channel->callbacks)) {
$channel->wait();
}
$channel->queue_delete($queue);
$channel->close();
$connection->close();
Скажите, в чем моя ошибка и помогите доработать этот скрипт.
Спасибо!