我正在尝试使用php-amqplib来发送和接收消息。它在终端上发送/接收工作。但是当转到Web浏览器时,无法从队列中接收,它会不断等待消息。我使用以下代码进行接收.php
require_once(__DIR__ . '/lib/php-amqplib/amqp.inc');
include_once(__DIR__ . '/config/config.php');
$connection = new AMQPConnection(HOST, PORT, USER, PASS, VHOST);
$channel = $connection->channel();
$channel->queue_declare('test22');
$callback = function($msg){
echo $msg->body;
};
$channel->basic_consume('test22', 'consumer_tag', false, true, false, false, $callback);
while(count($channel->callbacks)) {
$channel->wait();
}
$channel->close();
$connection->close();
如果我使用 under 而不是回调函数,它从队列中获取第一条消息,但不从队列中消耗
$abc=$channel->basic_get("test22", false, 2);
if(!empty($abc))
{
print_r($abc->body);
}
这意味着消息在队列"test22"中可用。给我任何线索。
将echo $msg->body;
更改为error_log($msg->body);
(或您正在使用的其他登录系统)。我想您可能会在日志上看到消息。在 Web 浏览器上,页面已加载,因此即使脚本收到消息也不会更改。