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 多平台公布