在 Ubuntu 上搭建与验证 RabbitMQ 死信队列
一 核心概念与适用场景
二 两种配置方式
# 1) 创建死信交换机
rabbitmqadmin declare exchange name=dlx type=direct
# 2) 创建死信队列
rabbitmqadmin declare queue name=dlq
# 3) 绑定 DLQ 到 DLX(可按需设置路由键)
rabbitmqadmin declare binding source=dlx destination=dlq routing_key=dlq_rk
# 4) 创建业务队列并绑定 DLX(未设置 x-dead-letter-routing-key 时沿用原消息路由键)
rabbitmqadmin declare queue name=original_queue arguments='{"x-dead-letter-exchange":"dlx"}'
# 将 / 虚拟主机下名称以 "order." 开头的队列统一设置 DLX
rabbitmqctl set_policy DLX "^order\." '{"dead-letter-exchange":"dlx"}' --vhost / --apply-to queues
三 Ubuntu 快速验证步骤
# DLX + DLQ
rabbitmqadmin declare exchange name=dlx type=direct
rabbitmqadmin declare queue name=dlq
rabbitmqadmin declare binding source=dlx destination=dlq routing_key=dlq_rk
# 业务队列:绑定 DLX;为演示“消息被拒”触发死信,关闭自动确认
rabbitmqadmin declare queue name=original_queue arguments='{"x-dead-letter-exchange":"dlx"}'
# 为演示方便,也可给业务队列设置队列级 TTL(单位毫秒,示例 10000ms)
# rabbitmqadmin declare queue name=original_queue arguments='{"x-dead-letter-exchange":"dlx","x-message-ttl":10000}'
四 常见陷阱与排查要点