关于程序员:PHP进阶Rabbitmq的实际使用

61次阅读

共计 1908 个字符,预计需要花费 5 分钟才能阅读完成。

RabbitMQ 是一个风行的音讯队列中间件,它提供了牢靠的消息传递机制。在应用 RabbitMQ 时,有几个重要的概念须要理解:

音讯队列(Message Queue):RabbitMQ 中的外围概念之一。它是音讯的缓冲区,用于存储发送者发送的音讯,以便期待接收者解决。

音讯生产者(Producer):负责向音讯队列中发送音讯的应用程序或组件。

音讯消费者(Consumer):从音讯队列中接管并解决音讯的应用程序或组件。

交换机(Exchange):用于将音讯路由到一个或多个音讯队列的组件。交换机依据规定(如路由键)将音讯发送到相应的队列。

队列绑定(Queue Binding):将队列与交换机关联的过程。绑定定义了交换机如何将音讯路由到与之绑定的队列。

路由键(Routing Key):用于将音讯从交换机路由到特定队列的关键字。交换机依据音讯的路由键将音讯发送到一个或多个与之匹配的队列。

确认(Acknowledgment):指消费者收到音讯并已确认解决实现的机制。RabbitMQ 反对确认机制,确保音讯被正确地解决。

长久化(Durability):指音讯队列和音讯是否长久化存储到磁盘上,以避免音讯失落。长久化确保在 RabbitMQ 服务器重启时不会失落音讯。

PHP 理论使用:

咱们来创立一个简略的 PHP 实例来应用 RabbitMQ。首先,你须要确保曾经装置了 RabbitMQ 服务器,并且在 PHP 中装置了 RabbitMQ 扩大。而后,咱们将创立一个简略的生产者和消费者来发送和接管音讯。

步骤 1: 装置 RabbitMQ PHP 扩大

你能够应用 pecl 来装置 RabbitMQ PHP 扩大:

pecl install amqp

步骤 2: 编写生产者

<?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('hello', false, false, false, false);

// 创立音讯
$msg = new AMQPMessage('Hello World!');

// 发送音讯到队列
$channel->basic_publish($msg, '','hello');

echo "[x] Sent'Hello World!'\n";

// 敞开连贯
$channel->close();
$connection->close();
?>

步骤 3: 编写消费者

<?php
require_once __DIR__ . '/vendor/autoload.php'; // 载入 Composer 主动加载器

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 ($channel->is_consuming()) {$channel->wait();
}

// 敞开连贯
$channel->close();
$connection->close();
?>

这就是一个简略的 RabbitMQ 示例。生产者发送音讯到名为 “hello” 的队列,而消费者监听这个队列并打印出收到的音讯.

咱们基于这些根底代码就能做业务啦。不同的业务会有些许差异。

本文由 mdnice 多平台公布

正文完
 0