35 lines
1.1 KiB
Python
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)
|