3.rabbitmq如何做到消息的100%成功投递?
biz db:业务数据库
msg db:消息数据库
upstream service:生产者
downstream service:消费者
callback service:中间服务(补偿机制)
mq broker:rabbitmq
流程介绍:
首先:将自己的业务进行入库操作,再发送消息到mq,消费者进行监听后消费,返回消费成功的消息到mq,中间服务监听成功回执进行入库,但是, 就在step4,发生断网等操作,消费成功的信息没有返回到mq,这时候,生产者开始发预定好的延迟检测机制,发一条消息到mq,中间服务消费后到msgdb查询是否刚刚发送的消息消费并且将成功回执入库成功,没有成功则发起rpc通信告知生产者,生产者将补偿一条消息发送给消费者,这时候,消费者需要做的是保证消息的不被重复消费!
优点:消息的失败回执是小概率事件,同时在保证中间服务也是高可用的情况下,将两个入库操作进行拆分,缓轻服务器的压力,