Files

35 lines
1.1 KiB
Python

from faststream.rabbit import ExchangeType, RabbitBroker, RabbitExchange, RabbitQueue
PAYMENTS_ROUTING_KEY = "payments.new"
DEAD_ROUTING_KEY = "payments.dead"
PAYMENTS_EXCHANGE = RabbitExchange(
"payments",
type=ExchangeType.DIRECT,
durable=True,
)
DEAD_EXCHANGE = RabbitExchange(
"payments.dlx",
type=ExchangeType.DIRECT,
durable=True,
)
PAYMENTS_QUEUE = RabbitQueue(
"payments.new",
durable=True,
arguments={
"x-dead-letter-exchange": DEAD_EXCHANGE.name,
"x-dead-letter-routing-key": DEAD_ROUTING_KEY,
},
)
DEAD_QUEUE = RabbitQueue("payments.dead", durable=True)
async def declare_topology(broker: RabbitBroker) -> None:
payments_exchange = await broker.declare_exchange(PAYMENTS_EXCHANGE)
dead_exchange = await broker.declare_exchange(DEAD_EXCHANGE)
payments_queue = await broker.declare_queue(PAYMENTS_QUEUE)
dead_queue = await broker.declare_queue(DEAD_QUEUE)
await payments_queue.bind(payments_exchange, routing_key=PAYMENTS_ROUTING_KEY)
await dead_queue.bind(dead_exchange, routing_key=DEAD_ROUTING_KEY)