【问题标题】:How to get all messages from the queue in php-amqplib (RabbitMQ)?如何从 php-amqplib (RabbitMQ) 中的队列中获取所有消息?
【发布时间】:2017-03-30 13:59:54
【问题描述】:

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

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

是否可以使用 RabbitMQ?

如何在 php 中实现?

【问题讨论】:

    标签: php queue rabbitmq


    【解决方案1】:
    <?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();
    

    【讨论】:

    • 谢谢,总有一天我会检查的!
    【解决方案2】:

    您无法通过调用单一方法获取当前可用的所有消息。
    最接近的解决方案是使用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

    【讨论】:

      猜你喜欢
      • 2018-08-10
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2013-05-17
      相关资源
      最近更新 更多