Какие типы обменов поддерживаются в RabbitMQ и где они применяются?
Ответ от нейросети
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')
Каждый тип обмена подходит для разных сценариев: от простой доставки до сложной маршрутизации по темам и фильтрации.