RabbitMQ-消息可靠性保障:消息补偿机制

文章目录


现有需求:
确保消息100%发送成功。

使用消息补偿机制:
在这里插入图片描述
1.业务数据入库

在发送消息前,先将消息入库

2.发送消息
发送消息m到消息队列Q1,Consumer监听到Q1的消息m后,消费消息m,并将消息m入库。然后发送确认消息给Q2,回调检查服务监听到Consumer反馈的确认消息后,也将消息写入数据库MDB。这是消息发送成功的正常情况。

倘若:发送消息失败,那么Consumer消费不到消息,Consumer的消息入库操作也失败了。这时也不用担心,因为在我们发送消息m后,过了几分钟后也会进行延迟发送消息m的副本给Q3,回调检查服务监听到延迟消息后,与MDB中的进行比对,MDB中没有消息m的记录,这说明Consumer消费消息m失败,那么回调检查服务就远程调用Producer跟它说一下再重发消息m,又重新进行上面消息发送的步骤。

几率很小的发送消息失败情况:

发送消息失败,延迟发送消息也失败。。。
这时定时检查服务会将消息数据库MDB中与业务数据库DB进行比对,然后让producer重发缺失的消息。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值