当前位置: 首页 > news >正文

RocketMQ如何保证消息可靠性

RocketMQ如何保证消息可靠性

需要从Producer、Broker、Consumer这三个方面来阐述。RocketMQ并不是说能100%保证消息不会丢失,而是通过各种手段把丢失概率降到极低。

Producer

依赖broker响应机制并且失败会重试

发送方式 是否可靠
oneWay 最差
async 中等
sync 最可靠

同步发送消息时,只有收到 Broker 成功响应(SEND_OK),才会认为消息发送成功,当然异步方式也有回调。但是异步方式失败了不会有重试逻辑。

同步发送时,若broker没有响应,或者响应不是SEND_OK(这个需要打开参数才行),会重试2次。并且重试时会选择另外的broker来进行发送,毕竟还是发送给失败的这个broker,可能还是会失败。

重试逻辑: DefaultMQProducerImpl.sendDefaultImpl()

挑选队列: DefaultMQProducerImpl.selectOneMessageQueue(),会轮训队列进行发送,若发送失败,轮训下一个队列时还会判断该队列是否分布在这个发送失败的broker上,若是则继续轮训下一个队列。若没有另外一个broker可选,则回退默认的轮训策略,不会再判断broker了。

若有响应,但是响应不是SEND_OK时,需要设置retryAnotherBrokerWhenNotStoreOK参数才会进行重试逻辑,默认为false。

只有同步发送,并且是普通消息(无序)才会有重试逻辑,因为普通消息可以随意选择发往不同的队列

/*** 有重试逻辑*/
public SendResult send(Message msg);
public SendResult send(Message msg,long timeout);/*** 无重试逻辑* 因为有指定要发送的队列*/
public SendResult send(Message msg, MessageQueueSelector selector, Object arg);
public SendResult send(Message msg, MessageQueue mq);

Broker

两种刷盘模式

同步刷盘 SYNC_FLUSH,真正落盘后才返回成功,即使Broker突然宕机,消息也已经持久化到磁盘上了。

异步刷盘 ASYNC_FLUSH(默认),此时消息只是写入到操作系统的PageCache,就返回成功了,还没有真正持久化到磁盘中,后台线程异步刷盘,性能会高很多,若Producer已经收到成功的响应,此时Broker突然宕机,异步线程还没有刷盘,那消息就丢失了。

两种复制方式

异步复制(ASYNC_MASTER),本地写成功就ACK,然后异步同步 Slave。风险: Master宕机Slave还没同步完成。

同步复制(SYNC_MASTER),master和slave都成功,才ACK。可靠性极高,但是性能下降明显。

因此最可高的方式是同步发送+同步刷盘+同步复制

Consumer

消费者也有ack机制,只有消费成功后才提交消费进度。并且消费失败有重试机制,超过最大重试次数后进入死信队列。消费端一定要最好幂等性设计,有太多的情况会导致消息重复投递,最典型的是消费进度没有提交成功。

http://www.zskr.cn/news/1480558.html

相关文章:

  • 轻松下载B站4K大会员视频:bilibili-downloader新手入门指南
  • 3个关键步骤:如何用LaserGRBL免费软件掌控激光雕刻全过程
  • 2026 石家庄闲置奢侈品如何变现 添价收统一流程规范交易细节 - 薛定谔的梨花猫
  • 一套可直接运行的雷达PRI分选MATLAB工具集,含信号生成、自相关分析与多级优化算法
  • 泉州丰泽区黄金回收行情解析与六家正规机构详览 - 专业黄金回收
  • 柳州鱼峰区当前黄金回收行情解析 如何安全变现避免踩坑 - 专业黄金回收
  • 惠州惠阳区黄金上门回收,足不出户轻松变现 - 专业黄金回收
  • 2026年6月最新:积家全国官方售后服务中心网点全面核验(含迁址与新增) - 亨得利官方服务中心
  • Mido:Python MIDI编程的3大核心问题解决方案
  • 传统晒太阳越久补钙越多,编写程序结合肤色,时段,时长,计算有效晒背时间,预警晒伤风险。
  • G-Helper:10MB的华硕笔记本终极轻量级控制工具,免费开源替代方案
  • 太原迎泽区黄金回收时机到944元克价卖金指南 - 专业黄金回收
  • 2026 西安碑林区包包回收哪家好 添价收现场核验快速结算 - 薛定谔的梨花猫
  • 2026年在线教育小程序怎么搭建 - 凡科杰建云
  • 3分钟搞定NCM格式转换:NcmpGui极速音乐解锁完全指南
  • 2026 临沂漏水维修全攻略|苏易修缮:厨卫 / 阳台 / 外墙 / 屋顶 / 地下室|靠谱防水门店 - 苏易修缮
  • 大二小白组队,如何用Hadoop+Spring Boot肝出一个国赛获奖项目?(附完整源码)
  • WechatBakTool:你的微信聊天记录守护者
  • 深圳福田黄金回收正当时,金价944元高位震荡,合理回收价约920-936元,警惕虚高报价陷阱。 - 专业黄金回收
  • 5分钟搞定全国高铁数据:Parse12306让你的出行规划更智能
  • 英雄联盟Akari助手:如何用智能工具从青铜快速上分到王者
  • PJSIP 2.x兼容的G.729A编解码器源码集(含LPC/ACELP/LSP全模块)
  • 高效AI教材写作攻略:低查重AI工具助力,一键生成专业教材!
  • 2026 平顶山漏水维修全攻略|苏易修缮:厨卫 / 阳台 / 外墙 / 屋顶 / 地下室|靠谱防水门店 - 苏易修缮
  • 2026无锡黄金回收TOP6 排行,正规变现最优选添价收门店 - 薛定谔的梨花猫
  • 深度解析:如何实现Switch控制器在Windows平台的5大关键技术突破
  • 5步搞定Steam游戏免Steam启动:小白也能上手的终极指南
  • 嵌入式C++开发中顺序容器的选择策略与性能优化实践
  • AI写教材神器登场!低查重一键生成20万字教材,配套内容超丰富!
  • FPGA实现CRC校验:从模2运算到硬件电路设计