rocket mq在生产阶段、Brocker存储阶段、消费阶段都会出现消息丢失。
1、生产者防止丢失消息。
a.同步阻塞的方式发送消息,加上失败重试机制,可能broker存储失败,可以通过查询确认
b.异步发送需要重写回调方法,检查发送结果
c.ack机制,可能存储CommitLog,存储ConsumerQueue失败,此时对消费者不可见
2、broker
Rocket mq有两种刷盘机制,一种是异步刷盘。一种是同步刷盘。在集群环境下,想要消息零丢失,要进行同步刷盘机制。
broker: 同步刷盘、集群模式下采用同步复制、会等待slave复制完成才会返回确认
3、消费者
offset手动提交,消息消费保证幂等