【问题标题】:How can I get single message from rabbitMq queue using PHP?如何使用 PHP 从 rabbitMq 队列中获取单个消息?
【发布时间】:2015-09-23 18:38:08
【问题描述】:

我只需要从一个队列中捕获一条实际消息。兔子试图抓住所有人。简化代码如下:

private function getSingleTask(){
$connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');

$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);

$callback = function($msg) {
 return $msg->body;
};

$channel->basic_qos(null, 1, null);
$channel->basic_consume('helloQueue', '', false, true, false, false, $callback);
$channel->wait(null, true, 5);
}

我向队列中抛出了一些消息,但是一旦我执行下面的部分代码,它就会从队列中获取所有消息,并且 $callbacks 只是第一个。

【问题讨论】:

    标签: php rabbitmq php-amqplib


    【解决方案1】:

    解决方法很简单……

    require_once __DIR__ . '/vendor/autoload.php';
    use PhpAmqpLib\Connection\AMQPConnection;
    
    $connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel(); 
    $result = ($channel->basic_get('helloQueue', true, null)->body);
    

    顺便说一句,“basic_get”方法的第二个参数设置了消息的确认,因此通过适当的服务器设置,它可以告诉您队列是否有消息,而不会收到消息。

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2013-12-18
      • 2011-02-17
      • 2018-08-10
      相关资源
      最近更新 更多