• 消息队列MQ如何保证消息不丢失


    消息队列防止消息不丢失

    1、 生产者发送消息到broker失败;生产者使用事务消息。

    2、 Broker集群主从同步失败;两阶段提交,多数节点成功后提交。

    3、 MQ异步刷盘,可能会消息丢失;改为同步刷盘。

    4、 Broker发送消息到消费者失败;消费者ack机制。

    5、 MQ集群挂掉了,生产者无法发送消息到MQ;消息临时存储在redis、文件或数据库中。

     

     

    事务状态为unknown状态,MQ会循环重试4567步骤。

    1-2:half机制确认MQ是否正常。

    3:执行本地事务失败(如数据库挂了),会将消息存储起来。MQ重试机制至本地事务成功后执行后面的操作。

    6:下单支付链路中,如要求下单后10分钟完成支付。MQ重试机制,下单后支付状态为unknown,最多重试10次检查支付状态是否成功,成功则commit,失败则rolllback。

     

     

     

     

     

     

    MQ挂了,生产者把消息存盘,redis、文件或数据库等。定时任务扫描把消息发送到恢复后的MQ中。

     

     

     

     

     

     

     

    1、 增加队列数量,多个消费者消费队列的消息;

    2、 无法动态扩容的情况下,增加topic,增加queue

     

  • 相关阅读:
    问题集
    第04次作业-树
    06-图
    05-查找
    04-树
    03-栈和队列
    02-线性表
    01-抽象数据类型
    C语言--总结报告
    C语言--函数嵌套
  • 原文地址:https://www.cnblogs.com/chenfx/p/15772840.html
Copyright © 2020-2023  润新知