RabbitMQ Messaging & Async Systems · Урок

Публикация и подписка с обменами fanout

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

Урок 4 из 413 шагов

«Публикация и подписка с обменами fanout» — бесплатный урок RabbitMQ Messaging & Async Systems на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения RabbitMQ Messaging & Async Systems, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс RabbitMQ Messaging & Async Systems содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Beyond a Single Consumer

Work queues deliver each message to one worker. But sometimes every interested consumer needs the same message — like broadcasting a live score to all dashboards.

This is the publish/subscribe pattern.

The Fanout Exchange

Pub/sub in RabbitMQ uses a fanout exchange, which copies every incoming message to all queues bound to it, ignoring routing keys entirely.

Declaring a Fanout Exchange

A producer declares the fanout exchange and publishes to it.

channel.exchangeDeclare('scores', 'fanout');
channel.basicPublish('scores', '', null, body);

Empty Routing Key

Notice the routing key is an empty string. Fanout exchanges ignore it, so producers do not need to specify any routing logic at all.

Temporary Queues

Each subscriber usually wants a fresh, private queue. Declaring a queue with no name lets RabbitMQ generate a random one, and marking it exclusive auto-deletes it when the consumer disconnects.

String q = channel.queueDeclare().getQueue();

Binding the Queue

The subscriber binds its temporary queue to the fanout exchange so it begins receiving broadcasts.

channel.queueBind(q, 'scores', '');

Multiple Independent Subscribers

Because each subscriber has its own queue, they all get independent copies of every message. Adding a new subscriber does not affect the others.

Pub/Sub vs Work Queues

Key difference:

  • Work queue — one queue, many workers, each message handled once
  • Pub/sub — many queues, each subscriber gets every message

Common Use Cases

Fanout pub/sub fits:

  • Live notifications and dashboards
  • Cache invalidation across many nodes
  • Broadcasting configuration changes
  • Logging to multiple sinks

Messages Without Consumers

If no queue is bound to a fanout exchange when a message arrives, the message is simply discarded. Fanout does not store anything itself — queues do.

Scaling Subscribers

To scale pub/sub, just add more subscribers, each with its own temporary queue bound to the exchange. The fanout exchange handles fan-out automatically.

Quick Check

Test your pub/sub knowledge.

Recap

You learned the publish/subscribe pattern:

  • Fanout exchanges broadcast to all bound queues
  • The routing key is ignored
  • Subscribers use temporary exclusive queues
  • Each subscriber gets an independent copy of every message

This pattern is the foundation for notifications, cache invalidation, and live updates.

Можно начать бесплатно

Изучай RabbitMQ Messaging & Async Systems с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
11
Уроки
44

Часто задаваемые вопросы

Урок «Публикация и подписка с обменами fanout» бесплатный?

Да — полный текст урока «Публикация и подписка с обменами fanout» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс RabbitMQ Messaging & Async Systems, подпишись на CoddyKit PRO. Курс RabbitMQ Messaging & Async Systems содержит 4 уроков всего.

Чему я научусь в уроке «Публикация и подписка с обменами fanout»?

Узнайте, как одновременно передавать сообщения множеству потребителей с помощью шаблона публикации и подписки RabbitMQ на основе обменов fanout и временных очередей. Ты практикуешь RabbitMQ Messaging & Async Systems с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать RabbitMQ Messaging & Async Systems?

Предыдущий опыт не требуется. RabbitMQ Messaging & Async Systems на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Публикация и подписка с обменами fanout»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке RabbitMQ Messaging & Async Systems?

Да. Каждый урок RabbitMQ Messaging & Async Systems включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Hello World: простая очередь
  2. Рабочие очереди: справедливое распределение
  3. Подтверждения и сохранность сообщений
  4. Публикация и подписка с обменами fanout
← Назад к RabbitMQ Messaging & Async Systems