首页/新闻资讯/正文详情

Kafka RabbitMQ 死信队列(DLQ)超全整合笔记

发布时间:2026/9/24 17:57:01 来源:云帆数科 栏目:资讯中心
Kafka  RabbitMQ 死信队列(DLQ)超全整合笔记
Kafka RabbitMQ 死信队列DLQ超全整合笔记一、死信队列 通用核心概念1.1 定义消息什么时候会变成死信常见 3 类条件RabbitMQ 为例死信队列作用1.2 消息流转链路1.3 通用使用场景二、RabbitMQ 死信队列DLX2.1 核心特性2.2 死信触发 3 大硬性条件面试必考2.3 完整工作流程2.4 优势 适用场景三、Kafka 死信队列DLQ3.1 核心特性与 RabbitMQ 最大区别3.2 Kafka DLQ 触发条件业务自定义3.3 三种主流实现方式方式1业务代码手动实现生产/面试重点方式2Kafka Connect 内置 DLQ数据同步场景方式3Kafka Streams 流处理 DLQ3.4 生产标准架构三板斧3.5 高频踩坑点四、RabbitMQ VS Kafka 死信 核心对比面试必背五、生产通用 DLQ 处理流程六、面试一句话总结一、死信队列 通用核心概念1.1 定义死信队列全称DLQDead Letter Queue是消息中间件中专门存放消费失败、重试失效、异常非法消息的「异常消息回收站」。核心作用隔离脏消息、不阻塞主业务、留存异常数据用于排查和补偿。死信队列就是消息无法被正常消费时被投递进去的 “存放失败消息” 的队列可以理解成消息的回收站 / 异常消息仓库。正常流程生产者 → 普通队列 → 消费者消费成功消息消失死信流程普通队列里的消息满足死信条件 → 消息变成死信 → 自动转发到死信队列等待人工处理消息什么时候会变成死信常见 3 类条件RabbitMQ 为例消息被拒绝消费消费者nack拒绝并且不重新放回原队列消息过期设置了 TTL 过期时间超时还没被消费队列达到最大长度队列消息堆满新消息进不来头部消息转为死信 注意死信队列本身也是一个普通队列只是被普通队列配置成死信接收目的地它自己也可以有消费者专门处理异常消息。死信队列作用不阻塞主业务失败消息不要一直重试霸占主队列避免正常消息被卡住异常隔离把消费失败的脏消息单独拎出来不污染正常消息事后排查人工消费死信队列查看失败原因日志、参数错误等修复后重放消息1.2 消息流转链路正常链路生产者 → 普通队列/Topic → 正常消费 → 消息销毁死信链路消息触发异常规则 → 转为死信 → 进入DLQ → 人工/程序修复重放1.3 通用使用场景消息参数非法、格式错误、业务校验不通过下游服务异常、接口超时多次重试依然失败消息超时未消费、队列积压溢出防止异常消息无限重试阻塞整个队列/分区留存异常数据用于问题排查、故障修复、数据补偿二、RabbitMQ 死信队列DLX2.1 核心特性原生支持 DLX 死信机制Broker 自动判定、自动路由死信消息无需业务代码硬编码仅配置即可生效本质死信队列就是普通队列只是被业务队列指定为死信接收队列2.2 死信触发 3 大硬性条件面试必考消息被拒绝消费消费者 nack / reject且 requeuefalse不重新入队消息超时过期队列/消息设置 TTL超时未消费自动变死信队列容量打满队列达到最大长度队首旧消息被挤出转为死信2.3 完整工作流程创建普通业务队列配置死信交换机、死信路由键创建独立死信队列绑定死信交换机业务消息正常消费则直接销毁异常则进入死信流程Broker 自动将异常消息转发至死信交换机死信交换机路由消息至死信队列监听死信队列统一排查、修复、重放消息2.4 优势 适用场景优势开箱即用、零代码侵入、Broker 自动托管、不阻塞主业务场景订单超时关闭、轻量延时任务、简单异常消息隔离、短时业务重试三、Kafka 死信队列DLQ3.1 核心特性与 RabbitMQ 最大区别Kafka 无原生死信机制、无自动路由能力Kafka 的 DLQ 本质就是一个普通 Topic死信判定、异常拦截、投递全部需要业务手动编码实现不支持 TTL 过期、队列满溢自动转死信3.2 Kafka DLQ 触发条件业务自定义反序列化失败消息格式错误、字段缺失、JSON/AVRO 解析异常业务校验失败参数非法、数据无效重试无法修复下游服务故障接口超时、服务宕机、重试次数耗尽未知消费异常消费报错防止分区阻塞转入死信3.3 三种主流实现方式方式1业务代码手动实现生产/面试重点核心try-catch 捕获异常区分可重试 / 不可重试异常临时异常超时、网络抖动→ 投递重试 Topic延迟重试永久异常 / 重试耗尽 → 手动投递DLQ 死信 Topic必须手动提交 Offset否则脏消息无限重试、阻塞分区DLQ 消息 Header 必须携带上下文原Topic、分区、Offset、异常堆栈、时间方式2Kafka Connect 内置 DLQ数据同步场景用于 DB、ES 数据同步无需编码直接配置{errors.tolerance:all,errors.deadletterqueue.topic.name:connect-dlq-topic,errors.deadletterqueue.topic.replication.factor:1,errors.deadletterqueue.context.headers.enable:true}方式3Kafka Streams 流处理 DLQ流式计算场景消费报错自动写入 DLQ Topic留存异常数据。3.4 生产标准架构三板斧业务Topic → 消费者消费├─ 临时异常 → 重试Topic延迟重试└─ 重试耗尽/永久异常 → DLQ死信Topic后续流程监控告警 → 异常排查 → 修复代码 → 消息重放补偿3.5 高频踩坑点未提交Offset脏消息无限循环消费分区阻塞、Lag 暴涨DLQ 无上下文无法追溯报错位置与原因所有异常直接进死信临时故障应先重试不应直接丢弃无 DLQ 监控死信堆积无人感知造成数据丢失四、RabbitMQ VS Kafka 死信 核心对比面试必背对比维度RabbitMQDLXKafkaDLQ Topic原生支持原生内置Broker自动路由无原生机制业务手动实现触发规则超时、nack拒绝、队列满溢固定3种全业务自定义捕获异常手动投递消息载体Queue 队列Topic 主题Offset管理Broker 自动管理开发者手动提交极易踩坑代码侵入极低仅配置较高需处理异常、Offset适用场景延时任务、轻量业务、异常隔离高并发、大数据流式、长链路业务五、生产通用 DLQ 处理流程监控告警对 DLQ 消息堆积配置告警及时发现异常异常溯源通过 Header、日志定位报错原因与原消息位置问题修复修复 Bug、脏数据、下游服务故障消息重放批量重放死信消息完成业务数据补偿六、面试一句话总结RabbitMQ 死信原生 DLX 自动死信满足超时、拒收、队列满三种条件自动路由无需编码适合轻量延时业务。Kafka 死信无原生支持靠代码捕获异常、区分重试/死信、手动提交 Offset 实现灵活性高适合高并发流式业务。

相关推荐

不想天天敲 systemctl?用 Cockpit 把 Linux 运维搬进浏览器,再远程管理
不想天天敲 systemctl?用 Cockpit 把 Linux 运维搬进浏览器,再远程管理

不想天天敲 systemctl?用 Cockpit 把 Linux 运维搬进浏览器,再远程管理 前言 刚开始接触 Linux 服务器时,我最不适应的并不是某一条命令有多难,而是很多状态都藏在命令后面:CPU、内存、磁盘、systemd 服务、日志、用户… · 2026/9/24 17:57:01

predictIndex 为什么越预测越抖:时间戳乱序、异常点与结果夹紧
predictIndex 为什么越预测越抖:时间戳乱序、异常点与结果夹紧

predictIndex 为什么越预测越抖:时间戳乱序、异常点与结果夹紧 跟手动画接入 mathPrediction.predictIndex 后,慢速拖动很顺,手指快速回摆时目标却突然跳到屏幕外。接口没有替业务判断采样质量:时间戳必须单调递增,采… · 2026/9/24 17:57:01

RedwoodJS 表单构建实战:用 Form Helpers 告别受控组件样板代码
RedwoodJS 表单构建实战:用 Form Helpers 告别受控组件样板代码

RedwoodJS 表单构建实战:用 Form Helpers 告别受控组件样板代码 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood 本文以 RedwoodJS 官方教程第三章的 "Building a Form" 为核心,系统讲解… · 2026/9/24 17:57:01

在科莱特学习 SAP FICO 模块,真正卡住我的不是月结,而是 FICO 与 PP 的衔接
在科莱特学习 SAP FICO 模块,真正卡住我的不是月结,而是 FICO 与 PP 的衔接

摘要:在科莱特跟着 Ethan 老师系统学习 SAP FICO 六个多月,从 FI 的基础模块一路学到 CO 的成本对象管理,我原以为最难的是月末月结那一套。直到课程推进到 FICO 与 PP(生产计划)模块的衔接,我才发现&#… · 2026/9/24 18:36:37

插入排序与希尔排序:原理、C语言实现与性能对比
插入排序与希尔排序:原理、C语言实现与性能对比

插入排序与希尔排序排序算法是数据结构与算法里绕不开的基础课,而插入排序和希尔排序这对“师徒组合”尤其值得花点时间搞清楚。插入排序是很多人学习排序时最早接触的几种算法之一,思路直观到几乎不需要背代码;希尔排序则是插入排序的升级改… · 2026/9/24 18:36:37

PoolFormer实战:用平均池化替代注意力的图像分类模型
PoolFormer实战:用平均池化替代注意力的图像分类模型

简介:面向图像分类与Transformer架构研究者,这套PoolFormer实战项目以MetaFormer通用框架为基础,通过简单非参数Pooling算子充当极弱token混合器,清晰展示了PoolFormer如何以较低算力实现有竞争力的图像分类效果。资源完整演示了从… · 2026/9/24 18:36:31

智能家居选购指南:不看品牌排名,先看这四个关键指标
智能家居选购指南:不看品牌排名,先看这四个关键指标

“智能家居哪个牌子好”几乎是我被问到最多的问题。每当有人拿着某平台的年度品牌榜单跑来问我“照这个买行不行”,我都会先说一句:榜单可以看,但别照单全收。这几年我一直在帮朋友、带客户做全屋智能的选型与调试,自己也前前后后… · 2026/9/24 18:36:31

Kong限流插件深度解析:local与redis策略选型与实战
Kong限流插件深度解析:local与redis策略选型与实战

最近一次接手公司 API 网关的限流改造,让我真正把 Kong 的 rate-limiting 插件从头到尾研究了一遍。之前一直用的是默认策略,网关是单节点部署,感觉一切正常。后来业务量上来了,网关横向扩到三台,结果限流数字完全对不… · 2026/9/24 18:36:31

Kong网关限流插件local与redis策略对比:从原理到生产配置全解析
Kong网关限流插件local与redis策略对比:从原理到生产配置全解析

Kong网关做过流量治理的人,对rate-limiting插件应该都不陌生。它配置简单,一个插件绑定到路由上,加两个参数就能把接口限流跑起来,但真正到了多节点部署、线上压测的时候,很多人会突然发现——咦,限流怎么不… · 2026/9/24 18:36:31

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码