EXCHANGES¶
Для объявления Exchange со всеми параметрами в Propan используется специальный класс propan.brokers.rabbit.RabbitExchange.
Вы можете использовать его как при получании сообщений, так и при их отправке:
from propan.brokers.rabbit import RabbitBroker, RabbitExchange
broker = RabbitBroker()
@broker.handler("test", exchange=RabbitExchange("test"))
async def handler():
...
...
await broker.publish("Hi!", "test", exchange=RabbitExchange("test"))
Конструктор RabbitExchange принимает следующие аргументы:
name: str - название exchangetype: propan.brokers.rabbit.RabbitExchange = RabbitExchange.DIRECT - тип вашего exchangedurable: bool = False - при установке в True, информация об exchange будет хранится в файловой системе и восстанавливаться при перезагрузке RabbitMQauto_delete: bool = False - при установке в True, exchange будет удален при отсутсвии очередей, которые его слушаютpassive: bool = False- при установке в
False, Propan попытается создать exchange с требуемыми параметрами, либо провалидирует соответсвие этих параметров уже существующему exchange с таким именем. - при установке в
True, Propan не будет создавать exchange, а только подключится к существующему. При этом, если запрашиваемого exchange не существует, возникнет ошибка
- при установке в
internal: bool = False - создать объект exchange в рантайме и не уведомлять RabbitMQ о создании exchangerobust: bool = True - пересоздавать exchange при переподключении к RabbitMQtimeout: int | float - время ожидания ответа от RabbitMQarguments: dict[str, Any] | None = None - кастомные аргументы для exchange
А также аргументы для прикрепления создаваемого exchange к другому
bind_to: RabbitExchange | None = None - родительский exchange, на который нужно подписатьсяbind_arguments: dict[str, Any] | None = None - аргументы подключения (используются для header exchange маршрутизации)routing_key: str = "" - ключ маршрутизации при подписке на родительский exchange