RabbitMQ 是什么?
作者:互联网
RabbitMQ 是一个广泛使用的消息队列实现。
步骤:
-
安装依赖: 确保你已经安装了 RabbitMQ 及其 PHP 客户端库。可以通过 Composer 安装:
composer require php-amqplib/php-amqplib
Bash -
编写获取消息的代码: 下面是一个简单的示例,展示了如何从 RabbitMQ 获取消息:
<?php require_once __DIR__ . '/vendor/autoload.php'; // 引入 Composer 的自动加载器 use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; // 创建 RabbitMQ 连接 $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); // 声明队列 $channel->queue_declare('task_queue', false, true, false, false, false, []); echo "等待接收消息...\n"; // 创建回调函数用于处理接收到的消息 $callback = function($msg) { echo '接收到消息: ', $msg->body, "\n"; // 确认消息处理完成 $msg->ack(); }; // 设置消费队列 $channel->basic_consume('task_queue', '', false, false, false, false, $callback); // 持续监听消息 while ($channel->is_consuming()) { $channel->wait(); } // 关闭通道与连接 $channel->close(); $connection->close();
PHP
说明:
-
连接到 RabbitMQ:需提供 RabbitMQ 服务器的主机名、端口、用户名和密码。在本例中,假定 RabbitMQ 在本地并使用默认凭据(guest/guest)。
-
声明队列:代码会声明一个名为
task_queue
的队列。如果队列不存在,RabbitMQ 会创建它。 -
处理消息:
$callback
函数是用来处理接收到的消息的。在这里,你可以按需处理消息内容。 -
持续监听:通过
while ($channel->is_consuming())
的循环,程序将持续等待消息到来。 -
确认消息:使用
$msg->ack();
确认消息已处理,避免消息丢失。
标签: 来源: