如何从php-amqplib(RabbitMQ)中获取队列中的所有消息?

时间:2017-03-30 13:59:54

标签: php queue rabbitmq

目前,我正在使用https://github.com/php-amqplib/php-amqplib并且已经在此存储库中阅读了很多示例,但我仍然不了解如何从队列中获取所有消息?< / p>

我只需要接收一些消息,按值对它们进行分组并执行操作。

是否可以使用RabbitMQ?

我如何在php中实现它?

2 个答案:

答案 0 :(得分:3)

<?php

use PhpAmqpLib\Connection\AMQPStreamConnection;

$connection = new AMQPStreamConnection('rabbitmq', 5672, 'guest', 'guest');
$channel = $connection->channel();
$queueName = 'task_queue';
$channel->queue_declare($queueName, false, true, false, false);
$result = $channel->basic_get($queueName);

var_dump($result);

$channel->close();
$connection->close();

答案 1 :(得分:1)

您无法通过调用单一方法获取当前可用的所有消息 最接近的解决方案是使用basic_consume方法。

例如:

function process_message($message)
{
    echo "Received message '" . $message->body . "'\n";

    /** Do your grouping here **/

}

$channel->basic_consume($queue, '', false, false, false, false, 'process_message');

// Loop as long as the channel has callbacks registered
while (count($channel->callbacks)) {
    $channel->wait();
}

您可以查看official RabbitMQ PHP tutorialdemo from php-amqplib