news 2026/5/9 20:04:29

RocketMQ怎么保证消息不丢失

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RocketMQ怎么保证消息不丢失

目录

一、生产端:消息能可靠到达 Broker

二、Broker 端:消息落盘 + 多副本,硬件故障也不丢

1. 同步刷盘(SYNC_FLUSH)

2. 主从同步复制(SYNC_MASTER)

3. 存储结构:顺序写 + 持久化

三、消费端:消费成功才确认,失败可重试

四、全链路配置建议(零丢失方案)

五、一句话总结


RocketMQ 保证消息不丢失,核心是生产端可靠发送 + Broker 持久化与高可用 + 消费端可靠消费的全链路设计。下面分段讲清楚原理与关键配置。


一、生产端:消息能可靠到达 Broker

  1. 同步发送 + 等待 ACK
    • send()同步发送,Broker 成功写入并持久化后才返回SEND_OK
    • 禁止用OneWay(单向发送,无确认),核心业务必须用同步 / 异步带回调发送。
  2. 自动重试 + 业务兜底
    • 客户端默认重试 2 次,可自定义重试次数与间隔。
    • 重试失败时,本地日志 / 数据库记录 + 定时重试,避免消息丢失RocketMQ。
  3. 事务消息(解决生产者本地事务与发送原子性)
    • 流程:发送 Half 消息 → 执行本地事务 → 成功则 Commit,失败则 Rollback。
    • Broker 长时间未收到指令会回查生产者事务状态,防止悬挂。

二、Broker 端:消息落盘 + 多副本,硬件故障也不丢

1. 同步刷盘(SYNC_FLUSH)
  • 消息写入CommitLog后,立即刷入磁盘才返回 ACK。
  • 配置:flushDiskType=SYNC_FLUSH(默认异步刷盘 ASYNC_FLUSH,断电会丢内存数据)。
  • 适用:金融 / 支付等零丢失场景。
2. 主从同步复制(SYNC_MASTER)
  • 主 Broker 写入成功后,同步复制到从 Broker,从节点确认后主节点才返回 ACK。
  • 配置:brokerRole=SYNC_MASTER(默认异步 ASYNC_MASTER,主宕机可能丢未复制数据)。
  • 高可用:主宕机,从自动切换为主,数据不丢。
3. 存储结构:顺序写 + 持久化
  • 消息 append 到 CommitLog,顺序写盘,性能高且不易损坏
  • 配合主从集群 + 同步刷盘,可抵御单机断电、磁盘损坏等故障。

三、消费端:消费成功才确认,失败可重试

  1. 先消费后 ACK(At Least Once)
    • Consumer 拉取消息→执行业务逻辑→成功后返回CONSUME_SUCCESS;失败返回RECONSUME_LATER
    • Broker 收到成功 ACK 才删除消息,否则重试投递
  2. Offset 持久化
    • 消费位点(Offset)定期持久化(默认 5 秒),也可手动提交,避免重启后重复消费或漏消费。
  3. 重试队列 + 死信队列(DLQ)
    • 消费失败→进入重试队列,延迟重试(默认最多 16 次)。
    • 超过最大重试次数→进入死信队列,人工排查补偿,防止消息丢失。
  4. 消费幂等(必做)
    • 重试会导致消息重复,业务需实现幂等性(如唯一键约束、状态机),保证 “至少一次” 转为 “精确一次”。

四、全链路配置建议(零丢失方案)

环节配置 / 实践
生产端同步发送、3-5 次重试、失败落地本地库、事务消息
Broker同步刷盘(SYNC_FLUSH)、同步主从(SYNC_MASTER)
消费端手动提交 ACK、业务成功后才返回成功、消费幂等、死信监控

五、一句话总结

RocketMQ 不丢消息靠:生产端同步发送 + 重试 + 事务、Broker 同步刷盘 + 同步主从、消费端先业务后 ACK + 重试 + 幂等,全链路闭环保障。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 20:03:39

BinaryEye条码生成教程:从文本到QR码的完整创建流程

BinaryEye条码生成教程:从文本到QR码的完整创建流程 【免费下载链接】BinaryEye Yet another barcode scanner for Android 项目地址: https://gitcode.com/gh_mirrors/bi/BinaryEye 想要快速生成专业的二维码和条码吗?BinaryEye作为一款功能强大…

作者头像 李华
网站建设 2026/5/9 20:01:24

【2026收藏版】小白程序员必看!AI Agent核心架构拆解

本文专为2026年想入门大模型、深耕AI Agent的小白和程序员打造,深入浅出拆解AI Agent的内部运作逻辑,从看似神秘的黑盒,到Chain-of-Thought、ReAct两大核心架构,再到工具调用的实战细节,一步步拆解Agent从接收用户指令…

作者头像 李华
网站建设 2026/5/9 19:59:25

基于NIST框架的健康AI算法偏见治理:从理论到工程实践

1. 项目概述:当AI决定你的健康,公平从何谈起? “构建可信AI促进全球健康公平”,这个标题精准地戳中了当前医疗人工智能领域最核心、也最容易被忽视的痛点。作为一名在医疗科技和数据伦理交叉领域摸爬滚打了十多年的从业者&#xf…

作者头像 李华
网站建设 2026/5/9 19:59:02

cann/cann-competitions 算子测试作品

团队信息 【免费下载链接】cann-competitions 本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。 项目地址: https://gitcode.com/cann/cann-competitions 团队名称:弥澄大亮所属单位:闽江大学团队成员&a…

作者头像 李华
网站建设 2026/5/9 19:58:41

轻量级多进程消息收发模型WEBSOCKET,MQTT

TCP方面除了用WEBSOCKET,还有什么组件可以收到完整的一条消息?比如MQTT? 纯TCP发送文字,一次收到多条,粘包比较麻烦,客户端想要来发也比较麻烦 你说到了TCP 最核心的痛点:流式传输、无边界、粘包 / 拆包,纯…

作者头像 李华
网站建设 2026/5/9 19:58:16

AGI如何革新放射肿瘤学:从多模态融合到全流程智能辅助

1. 项目概述:当AGI遇见放射肿瘤学最近几年,人工智能在医疗领域的应用已经从“锦上添花”变成了“雪中送炭”。作为一名长期关注医疗技术交叉应用的从业者,我亲眼见证了AI从辅助影像识别,到参与临床决策,再到如今对整个…

作者头像 李华