小编13D*_*GeR的帖子

使用 PhpAmqpLib 从rabbitmq消费者的回调中获取队列大小

我想记录工作人员回调的工作状态,并在左侧队列中包含一些消息。

到目前为止,我找到的唯一解决方案是获取queue_declare结果数组的第二个成员,但这应该在每个工作进程启动时调用一次,并且我需要在每条新消息中更新信息。

UPD:基于IMSoP 答案的解决方案:

<?php
require_once __DIR__ . '/../vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('test1');
echo "[*] Waiting for messages. To exit press CTRL+C\n";
$callback = function ($msg) use ($channel) {
    list (, $cn) = $channel->queue_declare('test1', true);
    echo ' [x] Received ', $msg->body, " $cn left";
    for ($i = 0; $i < $msg->body; ++$i) {
        sleep(1);
        echo '.';
    }
    echo "\n";
};
$channel->basic_qos(null, 1, null);
$channel->basic_consume('test1', '', false, …
Run Code Online (Sandbox Code Playgroud)

php queue rabbitmq php-amqplib

4
推荐指数
1
解决办法
4932
查看次数

标签 统计

php ×1

php-amqplib ×1

queue ×1

rabbitmq ×1