Встречается на собеседованиях • сегодня

Какие знаешь типы exchange в RabbitMQ

В RabbitMQ существует несколько типов exchange, которые определяют, как сообщения будут распределяться между очередями:

  1. Direct – сообщение отправляется в очередь, чей routing key точно совпадает с ключом сообщения. Пример:
python
channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
channel.basic_publish(exchange='direct_logs', routing_key='error', body='Error message')
  1. Fanout – сообщение рассылается во все связанные очереди, игнорируя routing key. Пример:
python
channel.exchange_declare(exchange='logs', exchange_type='fanout')
channel.basic_publish(exchange='logs', routing_key='', body='Broadcast message')
  1. Topic – сообщение отправляется в очереди, чей routing key соответствует шаблону (с поддержкой wildcards * и #). Пример:
python
channel.exchange_declare(exchange='topic_logs', exchange_type='topic')
channel.basic_publish(exchange='topic_logs', routing_key='system.error', body='Topic message')
  1. Headers – маршрутизация происходит на основе заголовков сообщения (а не routing key). Пример:
python
args = {'x-match': 'all', 'severity': 'error', 'source': 'api'}
channel.exchange_declare(exchange='headers_logs', exchange_type='headers')
channel.basic_publish(exchange='headers_logs', routing_key='', body='Headers message', properties=pika.BasicProperties(headers=args))

Также существует Default exchange (пустая строка ''), куда сообщения попадают напрямую в очередь с именем, равным routing key.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы