如何使用PHP从rabbitMq队列中获取单个消息?

时间:2015-09-23 18:38:09

标签: php rabbitmq php-amqplib

我需要从一个队列中捕获一条实际消息。兔子试图捕捉所有这些。以下简化代码:

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);
}

我向队列抛出一些消息,但是一旦我执行下面的部分代码,它就会从队列和$回调中获取所有消息。

1 个答案:

答案 0 :(得分:5)

解决方案很简单......

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);

BTW第二个参数" basic_get"方法为消息设置确认,因此通过适当的服务器设置,它可以告诉您队列是否有消息,而不会收到消息。