网站首页 > 博客文章 正文
RocketMQ 通过多层次的机制来确保消息不丢失,涵盖从生产者发送到消费者处理的整个过程。以下是主要保障措施:
1. 生产者端保障
- 同步发送模式:使用 send() 方法而非 sendOneway(),确保收到Broker确认响应
- 事务消息:支持分布式事务消息,通过二阶段提交保证消息和本地事务的一致性
- 失败重试:内置重试机制(默认重试2次)
- 刷盘确认:生产者可等待Broker刷盘完成后再返回发送成功状态
2. Broker端保障
- 同步刷盘:配置 flushDiskType=SYNC_FLUSH 确保消息持久化到磁盘后才返回确认
- 同步复制:主从模式下配置 brokerRole=SYNC_MASTER,确保消息同步到从节点后才返回确认
- 持久化存储:消息存储在CommitLog文件中,定期做Checkpoint
- 高可用部署:主从架构,主节点故障时从节点可继续服务
3. 消费者端保障
- 可靠消费:消费者正确返回 CONSUME_SUCCESS 状态
- 消费重试:消费失败时可通过重试队列重新消费(最多16次)
- 手动ACK:确保业务处理完成后再确认消息
- 消费位点持久化:定期将消费进度持久化,避免重复消费或消息丢失
4. 其他保障措施
- 定期备份:Broker定期备份消息数据
- 监控告警:监控消息堆积、消费延迟等指标
- 消息轨迹:记录消息全链路轨迹,便于排查问题
最佳实践配置示例
java
// 生产者配置
DefaultMQProducer producer = new DefaultMQProducer("group_name");
producer.setNamesrvAddr("name-server-ip:9876");
producer.setRetryTimesWhenSendFailed(3); // 发送失败重试次数
producer.start();
// 同步发送消息
try {
SendResult result = producer.send(msg);
} catch (Exception e) {
// 处理异常,可记录日志并人工介入
}
// Broker配置(conf/broker.conf)
brokerRole=SYNC_MASTER # 同步复制
flushDiskType=SYNC_FLUSH # 同步刷盘
通过以上多层次的保障措施,RocketMQ能够在绝大多数场景下确保消息不丢失。但在极端情况下(如所有副本同时故障),仍需结合业务层面的补偿机制来确保数据完整性。
猜你喜欢
- 2025-07-21 开源|一款类excel报表设计系统,支持拖拽式和word模板设计
- 2025-07-21 SpringBoot利用ThreadPoolTaskExecutor批量插入百万级数据实测!
- 2025-07-21 云端藏经阁:一款开源、精美、可独立部署的知识管理神器
- 2025-07-21 电商秒杀/库存扣减:基于JUC的并发控制实战案例
- 2025-07-21 简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ
- 2025-07-21 亿级分库分表,如何丝滑扩容、如何双写灰度
- 2025-07-21 使用mq实现分布式事务-补偿事务一致性
- 2025-07-21 【RocketMQ】消息的拉取(rocketmq消息大小)
- 2025-07-21 RocketMQ消息消费-客户端拉取消息前的准备工作
- 2025-07-21 RocketMQ消费限流的几种方式(rocketmq并发消费与顺序消费)
你 发表评论:
欢迎- 最近发表
-
- 谷歌云推出印度尼西亚“BerdAIa for Security”网络安全计划
- 谷歌:已解决全球服务中断问题,受影响平台涉及Spotify、Discord等
- 不再单一依赖英伟达,OpenAI被曝开始租用谷歌AI芯片训练ChatGPT
- 谷歌云代理商:怎样通过谷歌云服务器搭建社交平台?
- 谷歌云服务遭遇全球性宕机,影响多家互联网巨头
- OpenAI正式将谷歌云纳入供应商名单
- 谷歌给Agent造了个“微信”,和MCP功能互补,多智能体协作更顺畅了
- OpenAI“去微软化”加速:最新引入谷歌(GOOGL.US)构建混合云生态
- 谷歌给Agent造了个“微信”,和MCP功能互补,多智能体协作更顺畅
- 谷歌与OpenAI携手:云合作背后的机遇与隐忧
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)