Не удается прочитать все сообщения от RabbitMQ

Я создаю слушателя RabbitMQ:

$connection = new AMQPConnection(
$AMQP_config['server'],
$AMQP_config['port'],
$AMQP_config['user'],
$AMQP_config['password'],
$AMQP_config['virtual_host']
);

$channel = $connection->channel();

$channel->basic_qos(
null,
1,
null
);

$channel->basic_consume(
$AMQP_config['queue'],
'',
false,
false,
false,
false,
array($this, 'CallbackResponse')
);

while(count($channel->callbacks)) {
$channel->wait();
}

$channel->close();
$connection->close();

public function CallbackResponse(AMQPMessage $msg)
{
$response = json_decode($msg->body)->acopMessage;
if ($response->reqMRef == $this->_request_reference) {
$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
}
}

У меня 5 сообщений на моем сервере RabbitMQ. Но я получаю только один обратный вызов, только один входящий в CallbackResponse ().

Я хочу проверить все сообщения из очереди, найти сообщение, которое я отправил, прочитать его, чтобы осталось 4 сообщения.

Что я делаю не так, почему я получаю только первое сообщение?

Используя это: https://github.com/videlalvaro/php-amqplib

4

Решение

Ваше QoS установлено на 1. Поэтому RabbitMQ будет отправлять только одно сообщение за раз.

Поскольку вы только подтверждаете ожидаемое сообщение, первое полученное вами сообщение, которое не соответствует вашим условиям, остается непрочитанным. Таким образом, RabbitMQ не будет отправлять новое сообщение.

Поэтому сообщения, которые не совпадают, должны быть без упаковки и в очереди

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector