Какие обменники использовал в RabbitMQ
Python
Middle
Aston
Какие обменники использовал в RabbitMQ
Ответы
RabbitMQ поддерживает несколько типов обменников (exchanges), которые определяют, как сообщения будут распределяться между очередями:
- **Direct** – сообщение отправляется в очередь с точно совпадающим ключом маршрутизации (routing key).
Пример:
```
channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
channel.basic_publish(exchange='direct_logs', routing_key='error', body='Error message')
```
- **Fanout** – сообщение рассылается во все связанные очереди (broadcast).
Пример:
```
channel.exchange_declare(exchange='logs', exchange_type='fanout')
channel.basic_publish(exchange='logs', routing_key='', body='Broadcast message')
```
- **Topic** – маршрутизация по шаблону (wildcards: `*` – одно слово, `#` – несколько).
Пример:
```
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).
Пример:
```
args = {'x-match': 'all', 'severity': 'error'}
channel.exchange_declare(exchange='headers_logs', exchange_type='headers')
channel.basic_publish(exchange='headers_logs', routing_key='', body='Headers message', properties=headers)
```
Также есть **Default exchange** (пустое имя `""`), куда сообщения попадают напрямую в очередь, указанную в `routing_key`.