php - 如何在网络浏览器上使用 php-amqplib rabbitMQ

标签 php rabbitmq rabbitmq-exchange php-amqp

我正在尝试使用 php-amqplib 发送和接收消息。它可以在终端上发送/接收。但是当使用网络浏览器时,无法从队列中接收它不断等待消息。我在 receive.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();

如果我使用 below 而不是回调函数但不从队列中消费,它会从队列中获取第一条消息

$abc=$channel->basic_get("test22", false, 2);    
if(!empty($abc))
{
print_r($abc->body);
} 

这意味着消息在队列“test22”中可用。 给我任何线索。

最佳答案

echo $msg->body; 更改为 error_log($msg->body);(或您正在使用的其他登录系统)。我想您可能会在日志中看到消息。在 Web 浏览器上,页面已经加载,因此即使脚本正在接收消息也不会更改。

关于php - 如何在网络浏览器上使用 php-amqplib rabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27861418/

相关文章:

php - 如何在 php 中嵌入 python 脚本?

php - PDO不会选择数据库

php - 将对象推送到rabbitMQ队列上

java - DeliverCallback deliverCallback = (consumerTag, delivery) 函数未被调用

php - div 内容从网页底部剪裁

php - 在 $_POST 中获取所选项目的值

java - 如何在 Ruby 和 Java 之间序列化/解析 protobuf 对象?

java - 如何使用 Java RabbitMQ 并设置 URI 服务器?

java - 与rabbitmq java客户端API交换的列表绑定(bind)

java - 来自与 Apache Camel 的交换的具有相同路由键的多个队列