引言:消费失败怎么办?
Consumer消费失败时,RocketMQ自动重试:
消费失败 → 延迟重试 → 多次重试 → 死信队列
重试机制
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs) {
try {
// 处理消息
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
} catch (Exception e) {
// 返回RECONSUME_LATER触发重试
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
}
// 重试间隔:10s, 30s, 1m, 2m, 3m...最多16次
死信队列
16次重试失败 → 进入死信队列(%DLQ%消费组名)
死信队列处理
// 监听死信队列
@RocketMQMessageListener(
topic = "%DLQ%my_consumer_group",
consumerGroup = "dlq_handler_group"
)
public class DLQHandler implements RocketMQListener<String> {
@Override
public void onMessage(String msg) {
// 人工处理或记录日志
log.error("死信消息:{}", msg);
}
}
本文关键词:消息重试 死信队列 DLQ 失败处理