Sobes.tech
Назад к вопросам
Junior — Middle
63

Какие типы обменов поддерживаются в RabbitMQ и где они применяются?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

В RabbitMQ поддерживаются следующие типы обменов (exchanges), которые определяют логику маршрутизации сообщений:

  • Direct Exchange — маршрутизирует сообщения в очередь, где ключ маршрутизации (routing key) совпадает с ключом привязки (binding key). Используется для точечной доставки.

  • Fanout Exchange — рассылает сообщения во все очереди, привязанные к этому обмену, игнорируя ключ маршрутизации. Применяется для широковещательной рассылки.

  • Topic Exchange — маршрутизирует сообщения в очереди на основе шаблонов ключей маршрутизации с поддержкой подстановочных символов (* и #). Используется для гибкой маршрутизации по темам.

  • Headers Exchange — маршрутизирует сообщения на основе заголовков, а не ключа маршрутизации. Позволяет более сложные правила фильтрации.

Пример использования direct exchange в Python с библиотекой pika:

channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
channel.basic_publish(exchange='direct_logs', routing_key='error', body='Error message')

Каждый тип обмена подходит для разных сценариев: от простой доставки до сложной маршрутизации по темам и фильтрации.