RocketMq消息丢失场景及解决方案

  1. 生产者将消息发送给mq途中,因出现网络抖动,导致消息丢失
  2. 消息存储在pagecache区,且尚未触发异步刷盘,而出现断电一类,导致数据丢失。或是存入磁盘后,磁盘损坏导致数据丢失
  3. Consumer从mq中拿取数据,尚未完成消费,就通知mq消费完毕,然后消费者宕机,导致消息丢失

解决方案

场景一:

  1. 基于生产者的分布式事务来解决
  2. 若是消息推送mq过程中丢失,则执行回滚操作
  3. 生产者发送完消息以后,mq即使接收到响应成功后,暂时消费者也不会消费的(此时处于半消息状态)
  4. 生产者会执行自己的链路,若是执行完毕且成功,会再次通知mq将消息commit(二次确认机制),否则进行rollback操作

场景二:

将异步刷盘改为同步刷盘,同时对于broker进行集群化部署,进行主从复制策略

场景三:

  1. mq会在消费端注册一个监听,当consumer拿去到消息消费时,只有消费成功后,才会发送一个COMSUME_SUCCESS的状态,mq会知道消费成功(类似与一个ACK的确认机制)
  2. 当节点挂掉时,rocketmq长时间收不到响应(监听也没了),就会进行故障转移,将消息发给其他消费者处理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值