Отрицательные подтверждения 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
);

$this->_query_start_time = time();

$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']);

} else {
$msg->delivery_info['channel']->basic_nack($msg->delivery_info['delivery_tag'], false, true);
}
}

У меня есть 5 сообщений в очереди, но я всегда получаю только одно, а затем начинается рекурсия, потому что basic_nack не работает для сообщения.

Что не так, почему это не работает?

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

0

Решение

Задача ещё не решена.

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

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

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