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确认后删除持久化消息
  • 相关阅读:
    C++ 虚函数表解析
    C#编写简单的聊天程序
    c#事件与委托
    c#文本控件实现换行
    docker 详细安装及问题排查
    hadoop命令行
    Spark中的多线程并发处理
    CDH6.1.0离线安装——笔记
    linux 常用命令
    Rsync 恢复 libselinux.SO.1
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14160266.html
Copyright © 2011-2022 走看看