Вы можете думать о RabbitMQ как о посреднике между двумя сторонами. Один известен как производитель, который производит товары и услуги и сохраняет их в RabbitMQ. Другой — потребитель, который потребляет товары и услуги из RabbitMQ.

Итак, RabbitMQ принимает, сохраняет и пересылает двоичные блоки сообщений данных.

Производитель — это просто программа, которая используется для отправки сообщений.

Как мы знаем, сообщения хранятся и потребляются с помощью RabbitMQ, но в RabbitMQ есть место, где хранятся эти сообщения, и это место известно как Queue.

Очередь ограничивается объемом памяти хоста и дисковым пространством.

Это большой буфер сообщений, в котором хранятся сообщения от нескольких производителей и нескольких потребителей, пытающихся использовать данные из одной и той же очереди.

Потребитель – это программа, которая в основном ожидает приема сообщений из очереди.

При этом не обязательно, чтобы производитель, потребитель и буфер очереди находились на одном хосте.

На приведенной выше диаграмме P — производитель, а C — потребитель. Блок, который их соединяет, называется буфером очереди, в котором производитель хранит сообщения, а потребитель получает данные из буфера.
Для обмена сообщениями AMQP 0–9–1 — открытый протокол общего назначения.
Существует ряд клиентов для RabbitMQ на разных языках.

Мы будем использовать php-amqplib и Composer для управления зависимостями.

Шаги:

Когда в вашем проекте будет установлена ​​библиотека php-amqplib, вы можете продолжить работу с кодом.
Отправка

Здесь мы вызываем нашего производителя или отправителя сообщения как (producer.php), а потребителя или получателя сообщения как (receiver.php).
Производитель опубликует сообщение, связанное с RabbitMQ, отправит сообщение и завершит работу.< br /> В производителя.php мы должны включить библиотеку и необходимые классы, как показано ниже:
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

И после этого должно быть установлено соединение с сервером.
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
после этого мы должны создать канал:
$channel = $connection->channel();
Затем объявить очередь:
$channel->queue_declare(blog, false, false, false, false);
После этого мы должны опубликовать сообщение в этой очереди.
$msg = new AMQPMessage('RabbitMQ blog!');
$channel->basic_publish($msg, '', 'blog');
echo " [x] Sent 'RabbitMQ blog!'\n";

А потом закрыть канал и соединение
$channel->close();
$connection->close();

Прием

Как мы знаем, издатель отправляет одно сообщение в очередь и выходит. Но потребитель должен работать все время, чтобы потреблять сообщения и печатать их.
В reciever.php мы должны включить библиотеку и необходимые классы, как показано ниже:
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;

мы открываем соединение и канал, и объявить очередь, из которой мы собираемся потреблять.
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('blog', false, false, false, false);
echo " [*] Waiting for messages. To exit press CTRL+C\n";

В Consumer.php также снова объявлена ​​очередь блога, потому что иногда бывает так, что потребитель начинается раньше производителя, поэтому должен быть очередью.
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "\n";
};
$channel->basic_consume('blog', '', false, true, false, false, $callback);
while ($channel->is_consuming()) {
$channel->wait();
}

Существует вызываемое определение php, которое помогает нам получать сообщение, отправленное очередью.
Наш код будет блокироваться, пока наш $channel имеет обратные вызовы. Всякий раз, когда мы получаем сообщение, наша функция $callback будет передавать полученное сообщение.

Теперь мы можем запускать обе программы product.php и Consumer.php.
В терминале запустить:
Запустить Consumer.php
php Consumer.php< br /> После этого запустите производитель.php
php производителя.php
Потребитель распечатает сообщения, которые он получает из буфера, и продолжит работу, чтобы прослушивать Сообщения.

Webner Solutions — компания по разработке программного обеспечения, специализирующаяся на разработке систем управления страховыми агентствами, систем управления обучением и приложений Salesforce. Свяжитесь с нами по адресу [email protected] для подачи заявок на страхование, электронное обучение и Salesforce.

Первоначально опубликовано на https://blog.webnersolutions.com 24 сентября 2021 г.