第三章 (1-3)消息如何保障100%的投递成功?-RabbitMQ

1年前 ⋅ 1455 阅读

1、什么是消息可靠性投递

1)保障消息的成功发布
2)保障MQ节点的成功接收
3)发送端收到MQ节点(Broker)的确认应答
4)完善的消息进行补偿机制

2、生产端-可靠性投递

BAT/TMD 互联网大厂的解决方案
方案1:消息落库,对消息状态进行打标
W7DN}3Z0{J9LYG(LR~1EP39.png 步骤:
1)业务落库、消息落库
2)将消息投递到下游服务器MQ Broker
3)MQ Broker 收到消息,回送响应确认消息给 Confirm Listener
4)Confirm Listener 收到消息确认后修改数据库消息状态
5)分布式定时任务间隔一定时间段扫描数据库中未发送成功的消息
6)重新投递未发送成功的消息
7)重新投递次数超标时将数据库消息记录修改为“投递失败”

方案2:消息的延迟投递,做二次确认,回调检查
A93}R1{Y8T1SJZKHSY_Y9XT.png 1)业务落库,发送消息给 MQ Broker
2)发送延迟投递消息 MQ Broker
3)消费端处理消息
4)消费端发送确认消息给 MQ Broker
5)Callback收到确认消息,存储消息到 MSG DB
6)Callback收到延迟投递消息,到数据库确认,如果确认失败发起 RPC ReSend Command


全部评论: 0

    我有话说: