Back to questions
Junior — Middle
54
Можешь ли ты перечислить и описать различные типы обменов, используемые в RabbitMQ?
Companies where asked
Леста
Answer from AI
sobes.tech AI
В RabbitMQ существуют несколько типов обменников (exchanges), которые определяют, как сообщения маршрутизируются к очередям:
-
Direct Exchange
- Маршрутизирует сообщения в очередь, где ключ маршрутизации (routing key) точно совпадает с ключом, заданным при привязке очереди.
- Используется для точечной доставки сообщений.
-
Fanout Exchange
- Рассылает все полученные сообщения во все очереди, привязанные к этому обменнику, игнорируя ключ маршрутизации.
- Подходит для широковещательной рассылки.
-
Topic Exchange
- Маршрутизирует сообщения в очереди на основе шаблонов ключей маршрутизации с использованием подстановочных символов:
*— соответствует одному слову#— соответствует нулю или более словам
- Позволяет гибко фильтровать сообщения по темам.
- Маршрутизирует сообщения в очереди на основе шаблонов ключей маршрутизации с использованием подстановочных символов:
-
Headers Exchange
- Маршрутизирует сообщения на основе заголовков (headers) сообщений, а не ключа маршрутизации.
- Позволяет использовать сложные правила фильтрации по набору заголовков.
Пример использования direct exchange в Python с библиотекой pika:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
severity = 'error'
message = 'Error log message'
channel.basic_publish(exchange='direct_logs', routing_key=severity, body=message)
connection.close()
Каждый тип обменника подходит для разных сценариев маршрутизации сообщений.