消息的可靠性投递
-
消息入库,对消息状态进行打标记
image.png
1.业务操作入库,然后生成消息保存到数据库,状态为0
2.发送端将消息发送到MQ
3.MQ返回一个应答(发送端有一个监听程序)
4.将指定消息更新状态为1
5.定时取出状态为0的消息
6.调用发送端重新发送消息
7.限制重试次数,大于3次,将消息状态设置为2既重试失败 -
消息延迟投递,进行二次确认,回调检查
第一种方式不适合在高并发场景下
image.png
1.业务入库,然后发送消息到MQ
2.发送延迟检查消息
3.消费端监听指定消息并消费
4.消费端处理完消息,返回一条消息进行响应
5.Callback Service监听消费端的响应,收到后将消息持久化到数据库
6.Callback Service同时监听延迟检查消息。收到延迟检查消息后将数据库中对应的消息进行状态变更
7.Callback Service定时检查数据库中状态没有变更的消息。之后发送ReSend Command给发送端。
网友评论