1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jonny-li-rabbitmq-study

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
04-最适合入门的RabbitMQ+PHP教程(四)发布与订阅.md 4.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.06.2025 18:34 9a50763

В предыдущей главе мы привели пример простого использования rabbitmq, когда производитель отправлял одно сообщение, а потребитель его получал, то есть обрабатывался сообщение в одиночку. В этой главе мы рассмотрим публикацию и подписку в rabbitmq. Возможно, вы сразу вспомните публикацию и подписку в redis. В примере, который мы упомянули, мы используем систему логирования, то есть один производитель отправляет одно сообщение, которое передается нескольким потребителям. Чтобы продемонстрировать эту модель, мы создадим простую систему логирования. Она будет включать две программы: первый отправляет сообщения логирования, а второй принимает и выводит их.

###1. Важные моменты (1) Производитель — это приложение, которое создает и отправляет сообщения. (2) Очередь сообщений — это буфер для хранения сообщений. (3) Потребитель — это приложение, которое принимает отправленные сообщения. (4) Основная идея модели передачи сообщений в RabbitMQ заключается в том, что производитель никогда не отправляет сообщения напрямую в очередь. Иногда производитель даже не знает, будет ли сообщение передано в какую-либо очередь.### 2. Использование обменников для отправки сообщений (с использованием типа fanout) Он может передать все полученные сообщения во все известные ему очереди.

$this->amqp_channel = $this->amqp_connection->channel();
// Создание обменника
$this->amqp_channel->exchange_declare($exchange_name, $type, $passive, $durable, $auto_delete);
return $this;
```### 3. Связывание обменника и очереди
В предыдущей главе мы привели пример, когда производитель отправлял сообщение напрямую, не зная, куда оно отправляется, а потребитель принимал сообщение, не зная, откуда оно пришло. Иногда нам нужно указать, откуда берутся сообщения, и чтобы обменяться очередями между производителем и потребителем, нам нужно указать, куда отправляются сообщения. Для этого используется обменник, который помогает в этом. Мы создаем обменник типа `fanout` и очередь, а затем указываем обменнику отправлять сообщения в указанную очередь. Это создает связь (или связывание).

```php
$this->amqp_channel = $this->amqp_connection->channel();
$this->amqp_channel->exchange_declare($exchange_name, $type, $passive, $durable, $auto_delete);
list($queue_name, ,) = $this->amqp_channel->queue_declare("", false, false, true, false);
$this->queue_name = $queue_name;
// Связывание очереди с обменником
$routing_key = ''; // ключ маршрутизации по умолчанию пустой, ключ не требуется
$this->amqp_channel->queue_bind($queue_name, $exchange_name, $routing_key);
return $this;

Таким образом, обменник будет отправлять сообщения в нашу очередь. Сумма: Несмотря на то, что подписка и публикация почти идентичны описанным в предыдущих двух главах, мы публикуем сообщения с одного анонимного обмена на определенный обмен, а также можем использовать один и тот же обмен для публикации в различные очереди для потребления. Если очереди не привязаны к обмену, сообщения могут быть потеряны.Теги и ссылки сохранены без изменений.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jonny-li-rabbitmq-study.git
git@api.gitlife.ru:oschina-mirror/jonny-li-rabbitmq-study.git
oschina-mirror
jonny-li-rabbitmq-study
jonny-li-rabbitmq-study
master