RocketMQ如何保证消息不丢失?

文章讲述了生产者在发送消息到broker时采用同步方式并有重试机制,确保消息送达。在broker端,多master设计提供了容错性。消息落盘阶段采用同步刷盘,确保数据安全。消费者端则采用至少一次消费机制,防止消息丢失,同时支持消费重试。
摘要由CSDN通过智能技术生成
生产者消息发送阶段
  1. 同步发送

消息发送到broker,阻塞当前线程,等待响应的结果

  1. 消息发送重试机制

消息发送失败后,会通过for循环重新发送,默认3次重试发送

  1. broker提供多master

broker宕机后,消费发送多次依旧失败,生产者会找到其他主master的broker进行重新发送消息

消息落盘阶段
  1. 同步刷盘机制

消息写入内存后立马进行刷盘,保证刷盘成功后返回成功结果给到生产者

  1. 提供主从模式,支持同步双写机制

一台主master可以设置一台或多台slave,当master和slave都刷盘成功后,才返回成功结果给到生产者

消费者消息消费阶段
  1. 提供at least once机制,先消费在响应消费成功ack

先进行消息消费,消费成功后再返回消费成功的ack标志,同时为了防止重复消费,可以根据某些唯一key,查询数据库或者缓存来解决消费重复的问题

  1. 消费重试机制

消费失败提供消费重试机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值