消息队列如何保证消息不丢失,生产端和消费端各做哪些保障?
未标记
考查重点:发送、存储与消费交接。生产确认与可恢复重试,Broker持久/副本,消费业务成功后确认,未确认重放配幂等,对账查交接窗口
本题目录
参考答案
本答案基于相关资料,由 AI 辅助编写,供学习与面试准备参考。如有疏漏,欢迎反馈指正。
核心回答
消息可靠性要覆盖生产、队列存储、消费处理整条链路。生产端确认发送结果,对失败或结果未知的发送做可恢复重试;Broker 通过持久化、副本和故障切换保护已接收消息;消费端在业务处理成功后再确认,并用业务幂等处理重投。
可靠性有故障假设:所有副本同时永久丢失、消息已过保留期等情况仍可能造成损失。更准确的目标是,在约定故障范围内可恢复、可对账,而不是只设置一个参数就承诺绝不丢失。
各环节怎样兜底
生产端先把业务事件可靠记录下来。若数据库提交与发消息需要衔接,可以采用事务发件箱:业务记录和待发事件一起提交,再由发送器确认并补发。只在内存记“待发送”会在进程退出时丢失。
RabbitMQ 的 publisher confirm 只证明生产者与 Broker 一侧的接收,不代表消费者已完成业务;还需处理无法路由的消息,并结合合适的持久化队列类型与消息属性。Kafka 则需共同考虑副本数、ISR、acks 和最小同步副本数,发送确认也不是整个业务链的成功标志。
消费端先提交业务结果,再发送 ack 或提交 offset。若处理完成后、确认前宕机,消息会重来,业务唯一键、去重表或状态机应保证只产生一次效果;反过来先确认再处理,则宕机会形成业务漏处理。
追问
- 失败消息怎么办? 区分暂时失败和不可处理消息,有限退避重试;进入死信或失败任务后继续告警、对账和补偿,不能把转入死信当作业务成功。
- Exactly once 是否覆盖
MySQL?Kafka内部事务可协调输入位点与输出 Topic,但外部数据库还需参与协调,或把消费进度和业务结果放进同一个事务;不能直接外推。 - 怎样验证? 在发送确认前后、业务提交前后和位点提交前后终止实例,检查最终业务效果和待补偿记录,同时监控积压、重投及发送失败。
参考资料
- 国内:JavaGuide / Snailclimb:Kafka 常见面试题:借鉴生产者、消费者与 Broker 三段分析,组织正文对逐段可靠交接及确认提前、缺失风险的说明。
- 国内:doocs:如何保证消息的可靠性传输?:分段讨论说明消息可能丢在哪个环节;具体版本行为仍以官方文档为准。
- 国内:JavaGuide / Snailclimb:接口幂等性设计详解:幂等键和去重表的例子说明超时后重新投递时,怎样避免业务被执行两次。
- 国外:RabbitMQ:Consumer Acknowledgements and Publisher Confirms:依据生产与消费确认独立的约定,区分正文中 Broker 接管消息和业务处理完成。
- 国外:Apache Kafka:Design — Message Delivery Semantics:消费位点与输出结果的时序解释至少一次和最多一次语义怎样形成。
相关面经
23 篇百度
后端实习一面
mq有重试机制吗
虎牙
全栈开发校招秋招一面
如何解决 MQ 的消息丢失?
网易
游戏测试开发二面
针对上述问题,引入消息队列做削峰的话,怎么统计目前多少人在排队并告知正在登入的玩家?消息丢失怎么处理?怎样设计才能平衡好流量和玩家体验?
阿里巴巴
Agent 开发工程师一面
如何保证大流量下消息处理的鲁棒性?
懂车帝
后端开发工程师秋招一面
● 如何防止 MQ 的消息丢失问题?
展开剩余 18 篇面经
美团
后端开发一面
如何保证消息不丢?
汇川技术
全栈开发工程师怎么保证MQ发消息丢不了,怎么保证幂等性
顺丰
后端开发工程师一面
消息重试消息丢失
蚂蚁集团
面经合集
消息队列事务消息的核心流程是什么?怎么保证消息不丢失不重复?
去哪儿
软件开发秋招一面
使用 RocketMQ 时,有哪些方案保障消息不丢失。
蚂蚁集团
大模型应用开发秋招一面
消息队列怎么保证高可用,高可靠
哔哩哔哩、百度、腾讯
面经合集实习
消息队列读写速度是否压测过?队列堆积、写满时会不会丢消息?
蚂蚁集团
Agent 开发工程师秋招一面
消息队列如何保证消息不丢失?生产端、消费端分别需要做哪些保障?
蚂蚁集团
AI应用开发校招秋招一面
消息队列的发送消息的可靠性怎么做,消息重复消费怎么避免
拼多多
后端开发工程师秋招一面
消息队列顺序消费 重复消费 消息丢失怎么解决
网易
AI 应用开发工程师RabbitMQ消息丢失、重复消费、堆积、阻塞的成因和线上解决方案。
蚂蚁集团
智能体与大模型应用开发一面
滴滴
后端开发暑期实习一面
字节跳动
一面
MQ是怎么保证消息不丢的
京东
Java 后端 / AI 应用开发实习生实习暑期二面
如何保证异步消息(评论、日志入库等)百分百可靠落盘?如果消费失败怎么办?
蚂蚁集团
AI Infra一面
追问可靠性是如何实现的?
美团
AI 软件开发实习生实习暑期一面
消息队列如何保证消息不丢失
百度
Go 后端开发实习一面
MQ消息可靠性是如何保证的?






