1、什么是消息可靠性投递
1)保障消息的成功发布
2)保障MQ节点的成功接收
3)发送端收到MQ节点(Broker)的确认应答
4)完善的消息进行补偿机制
2、生产端-可靠性投递
BAT/TMD 互联网大厂的解决方案
方案1:消息落库,对消息状态进行打标
步骤:
1)业务落库、消息落库
2)将消息投递到下游服务器MQ Broker
3)MQ Broker 收到消息,回送响应确认消息给 Confirm Listener
4)Confirm Listener 收到消息确认后修改数据库消息状态
5)分布式定时任务间隔一定时间段扫描数据库中未发送成功的消息
6)重新投递未发送成功的消息
7)重新投递次数超标时将数据库消息记录修改为“投递失败”
方案2:消息的延迟投递,做二次确认,回调检查
1)业务落库,发送消息给 MQ Broker
2)发送延迟投递消息 MQ Broker
3)消费端处理消息
4)消费端发送确认消息给 MQ Broker
5)Callback收到确认消息,存储消息到 MSG DB
6)Callback收到延迟投递消息,到数据库确认,如果确认失败发起 RPC ReSend Command
注意:本文归作者所有,未经作者允许,不得转载