我创建 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']);
}
}
我的 RabbitMQ 服务器上有 5 条消息。但我只收到一个回调,只有一个进入 CallbackResponse()。
我想检查队列中的所有消息,找到我发送的那条消息,阅读它,所以还剩下 4 条消息。
我做错了什么,为什么我只收到第一条消息?
最佳答案
Your QoS is set to 1 .所以 RabbitMQ 一次只会发送一条消息。
因为您只确认您期望的消息,所以您收到的第一条不符合您条件的消息仍然未确认。因此,RabbitMQ 不会发送新消息。
所以不匹配的消息一定是unacked and requeued
关于php - 无法读取来自 RabbitMQ 的所有消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29744399/