困难 · 高频 5/5

如何保证 MQ 消息不丢失?

要从生产者确认、Broker 持久化、消费者确认、幂等消费和补偿对账五个环节一起保证,而不是只依赖 MQ 本身。

简短答案

要从生产者确认、Broker 持久化、消费者确认、幂等消费和补偿对账五个环节一起保证,而不是只依赖 MQ 本身。

详细解析

消息可靠性是一条链路:发送前本地事务或 outbox 记录,发送后等待 broker ack;Broker 开启持久化和副本;消费者处理成功后再 ack;失败要重试、死信或补偿;业务侧必须幂等。

面试回答模板

我会按生产、存储、消费、补偿四段回答。生产者要确认发送成功,Broker 要持久化和副本,消费者成功处理后再确认,失败进入重试或死信,最后通过业务流水做幂等和对账。

易错点

  • 只背结论,不解释原理和边界。
  • 忽略真实生产环境中的容量、延迟、一致性和失败重试。
  • 没有结合项目经验说明为什么这样设计。

常见追问

  • 这个方案在高并发下有什么风险?
  • 如果数据规模扩大十倍,你会如何调整?
  • 线上出现异常时,你会先看哪些指标?

相关题目

继续刷题
消息队列 入门 ★★★★

RabbitMQ

RabbitMQ 是 消息队列 中需要重点复习的条目,已从金山文档目录导入,后续可在后台补充完整答案、代码示例和图片。

消息队列 入门 ★★★★

RocketMQ

RocketMQ 是 消息队列 中需要重点复习的条目,已从金山文档目录导入,后续可在后台补充完整答案、代码示例和图片。

消息队列 入门 ★★★

Kafka

Kafka 是 消息队列 中需要重点复习的条目,已从金山文档目录导入,后续可在后台补充完整答案、代码示例和图片。