消息队列RabbitMQ之防止消息丢失

发布时间 2023-12-27 00:44:46作者: Crazy_Joker

大家好,我是joker,希望你快乐。

消息队列组成

使用消息队列会有三部分:消息生产者,消息队列,消息消费者,接下来说下各部分防止消息丢失的方法。

生产者

消息生产者发送消息失败。发布确认机制,RabbitMQ会返回一个ACK标识。

消费者

消息消费者获取消息后,消费失败。开启手动确认的方式,消息成功消费后,手动提交ACK标识给RabbitMQ

消息队列

  1. 开启持久化。

    • Exchange 设置持久化

    • Queue 设置持久化

    • Message持久化发送:发送消息设置发送模式deliveryMode=2,代表持久化消息

  2. 镜像模式:消息会同步到其他节点上,可以设置同步的节点个数,但吞吐量会下降。属于RabbitMQ的HA方案,三种HA策略模式:

    • 同步至所有的

    • 同步最多N个机器

    • 只同步至符合指定名称的nodes

  3. 消息补偿机制
    生产端首先将业务数据以及消息数据入库,需要在同一个事务中,消息数据入库失败,则整体回滚。
    根据消息表中消息状态,失败则进行消息补偿措施,重新发送消息处理。