Работал ли с маршрутизацией RabbitMQ
Python
Middle
Без компании
Работал ли с маршрутизацией RabbitMQ
Ответы
Да, работал. RabbitMQ поддерживает несколько типов маршрутизации через exchange: **direct**, **fanout**, **topic**, **headers**.
- **Direct** – сообщение идёт в очередь с точно совпадающим routing_key.
- **Fanout** – рассылка во все связанные очереди (broadcast).
- **Topic** – маршрутизация по шаблону (например, `logs.*` или `*.error`).
- **Headers** – маршрутизация по атрибутам сообщения (редко используется).
Пример с **topic exchange**:
```
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='topic_logs', exchange_type='topic')
routing_key = 'logs.error'
message = 'Critical error!'
channel.basic_publish(
exchange='topic_logs',
routing_key=routing_key,
body=message
)
print(f"Sent: {message}")
connection.close()
```
Для привязки очереди к exchange используется `queue_bind()`.