php rabbitmq消费端,消费消息。

<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;

$custom_queue = 'custom_queue'; // 简单模式队列名
$consumer_tag = 'v1_example';//消费者标签 可为空

// 连接RabbitMQ服务器 开启一个信道
// $connection = new AMQPStreamConnection(HOST, PORT, USER, PASS, VHOST);
$connection = new AMQPStreamConnection('192.168.1.7', 5672, 'admin', '123456', '/');
$channel = $connection->channel();

// 声明一个队列
// QUEUE_NAME 队列名
// PASSIVE 检测队列是否存在,ture 只检测不创建, false 创建
// DURABLE 是否持久化队列,true为持久化
// EXCLUSIVE 是否设置成私有队列,限制其他用户访问,设置true将会变成私有
// AUTO_DELETE 队列绑定的全部消费链接断开后,是否自动删除队列
//$channel->queue_declare(QUEUE_NAME, PASSIVE, DURABLE, EXCLUSIVE, AUTO_DELETE);
$channel->queue_declare($custom_queue, false, false, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C\n";

// 定义回调函数
$callback = function ($msg) {
    echo ' [x] Received ', $msg->body, "\n";
};

// queue   队列名称
// consumer_tag  消费者标签
// no_ack  在设置了 no_ack=false 的情况下)只要 consumer 手动应答了 Basic.Ack ,就算其“成功”处理了
// no_ack=true (此时为自动应答)
// exclusive  是否是私有队列 设置true 将会变成私有
// callback = null, 回调函数
$channel->basic_consume($custom_queue, $consumer_tag, false, false, false, false, $callback);

// 循环消费/接收消息
while ($channel->is_open()) {
    $channel->wait();
}

// 关闭信道
$channel->close();
//关闭 amqp 连接
$connection->close();
点赞(1) 打赏

Comment list 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部