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