全书目录

第二十一篇:RabbitMQ 完全指南 —— 城市智能快递调度中心宇宙

第十章:死信不是“报错垃圾桶”,而是异常分流通道

1 分钟 290 字 第 392 / 962 个阅读单元

Dead Letter Exchange,简称 DLX。

它的心智不是:

text
消息死了,随便丢个垃圾桶

更准确的理解是:

原本不能继续按正常路径处理的包裹,被重新投递到另一条异常处理通道。

在 RabbitMQ 里,常见会触发死信的情况有:

  • 消费者 reject / nack,并且 requeue=False
  • 消息 TTL 到期
  • 队列长度超限导致消息被丢弃
  • quorum queue 超过投递限制

所以死信队列非常适合做:

  • 人工排查
  • 失败审计
  • 补偿任务
  • 告警触发
  • 离线修复

城市类比就是:

text
正常派送货架处理不了
-> 转入异常件中心
-> 由人工专员或特殊流程接手

一个最小示例:

python
channel.queue_declare(
    queue="order.main.q",
    durable=True,
    arguments={
        "x-dead-letter-exchange": "order.dlx",
        "x-dead-letter-routing-key": "order.dead",
    },
)

这表示:

order.main.q 上处理失败、过期、溢出的异常件,可以被改投到 order.dlx