以下是PHP+RabbitMQ实现消息队列的完整代码的完整攻略,包含两个示例说明。
示例1:使用PHP+RabbitMQ实现消息队列
步骤1:安装RabbitMQ
如果您还没有装RabbitMQ,请先安装它。您可以按照官方文档的说明进行安装。
步骤2:安装PHP AMQP扩展
如果您还没有安装PHP AMQP扩展,请先安装它。您可以按照官方文档的说明进行安装。
步骤3:编写生产者代码
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
// 连接RabbitMQ
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
// 声明队列
$channel->queue_declare('hello', false, false, false, false);
// 发送消息
$message = new AMQPMessage('Hello World!');
$channel->basic_publish($message, '', 'hello');
echo " [x] Sent 'Hello World!'\n";
// 关闭连接
$channel->close();
$connection->close();
步骤4:编写消费者代码
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
// 连接RabbitMQ
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
// 声明队列
$channel->queue_declare('hello', false, false, false, false);
echo " [*] Waiting for messages. To exit press CTRL+C\n";
// 回调函数
$callback = function ($msg) {
echo " [x] Received ", $msg->body, "\n";
};
// 消费消息
$channel->basic_consume('hello', '', false, true, false, false, $callback);
while (count($channel->callbacks)) {
$channel->wait();
}
// 关闭连接
$channel->close();
$connection->close();
步骤5:运行代码
在终端中,分别运行生产者和消费者代码:
php producer.php
php consumer.php
步骤6:查看结果
在终端中,您将看到消费者输出的结果。
示例2:使用PHP+RabbitMQ实现工作队列
步骤1:安装RabbitMQ
同示例1。
步骤2:安装PHP AMQP扩展
同示例1。
步骤3:编写生产者代码
<?php
require_once __DIR__ . '/vendor/autoload.php';
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);
// 发送消息
$message = new AMQPMessage('Hello World!');
$channel->basic_publish($message, '', 'task_queue');
echo " [x] Sent 'Hello World!'\n";
// 关闭连接
$channel->close();
$connection->close();
步骤4:编写消费者代码
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
// 连接RabbitMQ
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
// 声明队列
$channel->queue_declare('task_queue', false, true, false, false);
echo " [*] Waiting for messages. To exit press CTRL+C\n";
// 回调函数
$callback = function ($msg) {
echo " [x] Received ", $msg->body, "\n";
sleep(substr_count($msg->body, '.'));
echo " [x] Done\n";
$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
};
// 消费消息
$channel->basic_qos(null, 1, null);
$channel->basic_consume('task_queue', '', false, false, false, false, $callback);
while (count($channel->callbacks)) {
$channel->wait();
}
// 关闭连接
$channel->close();
$connection->close();
步骤5:运行代码
在终端中,分别运行生产者和消费者代码:
php producer.php
php consumer.php
步骤6:查看结果
在终端中,您将看到消费者输出的结果。
以上就是PHP+RabbitMQ实现消息队列的完整代码的完整攻略,包含两个示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP+RabbitMQ实现消息队列的完整代码 - Python技术站