RabbitMQ 的回调不返回任何内容



我正在使用PHP中的RabbitMQ。我能够发送消息,但在接收端遇到问题。

这是我的发件人代码

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$consumerTag = 'consumer' . getmypid();
$channel->queue_declare('loggingQ', false, true, false, false);
$msg = new AMQPMessage("hi");
$channel->basic_publish($msg, '', 'loggingQ');
$channel->close();
$connection->close();

这是接收器的代码

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('loggingQ', false, true, false, false);
$callback = function($msg) {
    echo $msg->body;
};
$channel->basic_consume('loggingQ', '', false, true, false, false, $callback);
while(count($channel->callbacks)) {
   $channel->wait();
} 
$channel->close();
$connection->close();

现在的问题出在我的接收端,它永远不会回显消息。它只是像永无止境的过程一样不断请求。

如何在回调方法中获取消息。它从不打印任何东西。任何帮助将不胜感激。

我对 RabbitMQ 没有太多的经验,所以很抱歉可能是一个糟糕的解释,但我使用它的方式是遵循 https://www.rabbitmq.com/tutorials/tutorial-two-php.html 的教程。 我认为通常假设您的工作人员已准备好处理发送的任何消息(这取决于队列类型(。

如果您希望消息持久化,则需要将其称为...

$msg = new AMQPMessage("hi",
       array('delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT)
       );

相关内容

最新更新