RocketMQ消息丢失问题

同步消息要同步刷盘才完成一次消息发送,一般不会消息丢失,但会增加一定的延迟。

异步消息异步刷盘,先将消息存于缓冲区,达到一定大小才进行刷盘,存在消息丢失风险。

实际开发中一般使用异步消息,为防止消息丢失通常自己对消息进行持久化:日志记录在文件或记录数据库等。

生产者发送消息后将消息记录在MySQL并添加状态,消费者处理完消息后更新MySQL中消息的状态,最后通过定时任务将设定时长内未消费的消息进行补发避免消息丢失,同时防止重复消费,可参考《RocketMQ重复消费问题》。

RocketMQ消息丢失问题_第1张图片
 

你可能感兴趣的:(中间件,rocketmq,java,mysql,java-rocketmq)