简介
死信队列(Dead-Letter-Queue,DLQ)用于处理无法被正常消费的消息。达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时 CMQ 不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中,这个特殊队列就是 DLQ。对新建的队列,或存量的队列,您都可以启用死信队列。
死信队列
死信,在官网中对应的单词为 “Dead Letter”,可以看出翻译确实非常的简单粗暴。那么死信是个什么东西呢?
“死信” 是 RabbitMQ 中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:
- 消息被否定确认,使用
channel.basicNack或channel.basicReject,并且此时requeue属性被设置为false。 - 消息在队列的存活时间超过设置的 TTL 时间。
- 消息队列的消息数量已经超过最大队列长度。
那么该消息将成为 “死信”。
“死信” 消息会被 RabbitMQ 进行特殊处理,如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃。
配置实现
1 | import org.springframework.amqp.core.*; |