Встречается на 1% собеседований по Python
Какие знаешь типы exchange в RabbitMQ
В RabbitMQ существует несколько типов exchange, которые определяют, как сообщения будут распределяться между очередями:
- 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')- Fanout – сообщение рассылается во все связанные очереди, игнорируя routing key. Пример:
python
channel.exchange_declare(exchange='logs', exchange_type='fanout')
channel.basic_publish(exchange='logs', routing_key='', body='Broadcast message')- 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')- 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.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы