zoukankan      html  css  js  c++  java
  • 怎么保证消息的不丢失

    怎么保证消息的不丢失

    原因

    • 消息生产者没有成功发送到MQ Broker

    • 消息发送给MQ Broker后,Broker 宕机后导致内存中的消息数据丢失

    • 消费者获取到消息,但消费者还没有来得及处理宕机了,但此时MQ中的消息已经删除,消费者重启后不能再消费之前的消息

    解决思路

    • 消息发送者发送给MQ Broker后,MQ Broker给生产者确认收到。
      • confirm模式用的居多:一旦channel进入confirm模式,所有在该信道上发布的消息都将会被指派一个唯一的ID(从1开始),当消息都被投递到队列后,MQ会发送一个ACK给生产者,如果没有处理消息,则会发送Nack。
    • MQ收到消息后进行消费持久化
      • 将queue的持久化标识durable设置为true,代表持久的队列
      • 发送消息的时候将deliveryMode=2(即消息的持久化)
    • 消费者收到消息处理后手动进行ack确认
      • 将autoAck设置为false
    • MQ收到消费者ack确认后删除持久化消息
  • 相关阅读:
    2019年下半年学习总结
    要看的积累
    【长期积累】Java
    【长期积累】数据库
    一些知识总结
    一些小总结
    优秀前端框架Semantic UI
    windows nodejs express的安装
    形象的讲解angular中的$q与promise(转)
    centos6.5 install mongodb
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14160266.html
Copyright © 2011-2022 走看看