消息队列如何保证消息不丢失,生产端和消费端各做哪些保障?

考查重点:发送、存储与消费交接。生产确认与可恢复重试,Broker持久/副本,消费业务成功后确认,未确认重放配幂等,对账查交接窗口

本题目录

参考答案

核心回答

消息可靠性要覆盖生产、队列存储、消费处理整条链路。生产端确认发送结果,对失败或结果未知的发送做可恢复重试;Broker 通过持久化、副本和故障切换保护已接收消息;消费端在业务处理成功后再确认,并用业务幂等处理重投。

可靠性有故障假设:所有副本同时永久丢失、消息已过保留期等情况仍可能造成损失。更准确的目标是,在约定故障范围内可恢复、可对账,而不是只设置一个参数就承诺绝不丢失。

各环节怎样兜底

生产端先把业务事件可靠记录下来。若数据库提交与发消息需要衔接,可以采用事务发件箱:业务记录和待发事件一起提交,再由发送器确认并补发。只在内存记“待发送”会在进程退出时丢失。

RabbitMQ 的 publisher confirm 只证明生产者与 Broker 一侧的接收,不代表消费者已完成业务;还需处理无法路由的消息,并结合合适的持久化队列类型与消息属性。Kafka 则需共同考虑副本数、ISR、acks 和最小同步副本数,发送确认也不是整个业务链的成功标志。

消费端先提交业务结果,再发送 ack 或提交 offset。若处理完成后、确认前宕机,消息会重来,业务唯一键、去重表或状态机应保证只产生一次效果;反过来先确认再处理,则宕机会形成业务漏处理。

追问

  • 失败消息怎么办? 区分暂时失败和不可处理消息,有限退避重试;进入死信或失败任务后继续告警、对账和补偿,不能把转入死信当作业务成功。
  • Exactly once 是否覆盖 MySQL? Kafka 内部事务可协调输入位点与输出 Topic,但外部数据库还需参与协调,或把消费进度和业务结果放进同一个事务;不能直接外推。
  • 怎样验证? 在发送确认前后、业务提交前后和位点提交前后终止实例,检查最终业务效果和待补偿记录,同时监控积压、重投及发送失败。

参考资料

相关面经

23 篇

百度

后端
实习一面
查看原面经 →
mq有重试机制吗

虎牙

全栈开发
校招秋招一面
查看原面经 →
如何解决 MQ 的消息丢失?

网易

游戏测试开发
二面
查看原面经 →
针对上述问题,引入消息队列做削峰的话,怎么统计目前多少人在排队并告知正在登入的玩家?消息丢失怎么处理?怎样设计才能平衡好流量和玩家体验?

阿里巴巴

Agent 开发工程师
一面
查看原面经 →
如何保证大流量下消息处理的鲁棒性?

懂车帝

后端开发工程师
秋招一面
查看原面经 →
● 如何防止 MQ 的消息丢失问题?
展开剩余 18 篇面经

美团

后端开发
一面
查看原面经 →
如何保证消息不丢?

汇川技术

全栈开发工程师
查看原面经 →
怎么保证MQ发消息丢不了,怎么保证幂等性

顺丰

后端开发工程师
一面
查看原面经 →
消息重试消息丢失

蚂蚁集团

面经合集
查看原面经 →
消息队列事务消息的核心流程是什么?怎么保证消息不丢失不重复?

去哪儿

软件开发
秋招一面
查看原面经 →
追问
使用 RocketMQ 时,有哪些方案保障消息不丢失。

蚂蚁集团

大模型应用开发
秋招一面
查看原面经 →
消息队列怎么保证高可用,高可靠

哔哩哔哩、百度、腾讯

面经合集实习
查看原面经 →
消息队列读写速度是否压测过?队列堆积、写满时会不会丢消息?

蚂蚁集团

Agent 开发工程师
秋招一面
查看原面经 →
消息队列如何保证消息不丢失?生产端、消费端分别需要做哪些保障?

蚂蚁集团

AI应用开发
校招秋招一面
查看原面经 →
消息队列的发送消息的可靠性怎么做,消息重复消费怎么避免

拼多多

后端开发工程师
秋招一面
查看原面经 →
消息队列顺序消费 重复消费 消息丢失怎么解决

网易

AI 应用开发工程师
查看原面经 →
RabbitMQ消息丢失、重复消费、堆积、阻塞的成因和线上解决方案。

蚂蚁集团

智能体与大模型应用开发
一面
查看原面经 →
如果用消息队列,如果有一条消息没有及时处理,可能是对堆积了也可能是消息发送给系统但是系统繁忙给丢弃了,你会怎么做
如果系统繁忙,支付消息丢失了,客户没付钱,但是订单创建成功了,应该怎么后续弥补

滴滴

后端开发
暑期实习一面
查看原面经 →
补偿回滚的消息可能丢失,怎么解决?
消息队列怎么保证可靠性?

字节跳动

一面
查看原面经 →
MQ是怎么保证消息不丢的

京东

Java 后端 / AI 应用开发实习生
实习暑期二面
查看原面经 →
如何保证异步消息(评论、日志入库等)百分百可靠落盘?如果消费失败怎么办?

蚂蚁集团

AI Infra
一面
查看原面经 →
追问可靠性是如何实现的?

美团

AI 软件开发实习生
实习暑期一面
查看原面经 →
消息队列如何保证消息不丢失

百度

Go 后端开发
实习一面
查看原面经 →
MQ消息可靠性是如何保证的?

收录题集

2 个来源,共2 份题集

相关题目

4 题