大家好,我是joker,希望你快乐。
消息队列组成
使用消息队列会有三部分:消息生产者,消息队列,消息消费者,接下来说下各部分防止消息丢失的方法。
生产者
消息生产者发送消息失败。发布确认机制,RabbitMQ会返回一个ACK标识。
消费者
消息消费者获取消息后,消费失败。开启手动确认的方式,消息成功消费后,手动提交ACK标识给RabbitMQ
消息队列
-
开启持久化。
-
Exchange 设置持久化
-
Queue 设置持久化
-
Message持久化发送:发送消息设置发送模式deliveryMode=2,代表持久化消息
-
-
镜像模式:消息会同步到其他节点上,可以设置同步的节点个数,但吞吐量会下降。属于RabbitMQ的HA方案,三种HA策略模式:
-
同步至所有的
-
同步最多N个机器
-
只同步至符合指定名称的nodes
-
-
消息补偿机制
生产端首先将业务数据以及消息数据入库,需要在同一个事务中,消息数据入库失败,则整体回滚。
根据消息表中消息状态,失败则进行消息补偿措施,重新发送消息处理。