分享一个链接:https://www.zhihu.com/tardis/sogou/art/166426241

RocketMq消息丢失问题解决

这个图很好,基本上就是这个问题的解决思路。我这里总结一下:

为什么会消息丢失?

  • 存储在队列中,如果队列没有对消息持久化,RabbitMQ服务器宕机重启会丢失数据。
  • 生产者发送消息到RabbitMQ服务器过程中,RabbitMQ服务器如果宕机停止服务,消息会丢失。
  • 消费者从RabbitMQ服务器获取队列中存储的数据消费,但是消费者程序出错或者宕机而没有正确消费,导致数据丢失。

解决方法:1.消息持久化(Exchange交换机持久化     Queue持久化) 

消息持久化可以防止消息在MQ Server中不会因为宕机重启而丢失。

 2.消息确认机制(confirm机制,事务机制)    

(1)confirm机制:通过两个回调函数确认confirm(),returnedMessage();

首先在配置文件中配置,接着需要定义回调方法。

confirm模式,作用是为了保证生产者投递到Mq不会出现消息丢失。

(2)事务机制:首先在配置文件中配置,然后编写消费者的监听器

相关文章:

  • 2021-08-17
  • 2021-09-14
  • 2021-11-02
  • 2021-09-20
  • 2018-03-03
  • 2021-11-06
  • 2021-10-08
  • 2021-10-26
猜你喜欢
  • 2020-10-13
  • 2021-09-13
  • 2020-10-12
  • 2020-10-28
  • 2021-07-17
  • 2019-08-30
  • 2020-03-25
  • 2021-09-28
相关资源
相似解决方案