Я создаю слушателя 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
Задача ещё не решена.
Других решений пока нет …