RabbitMQ 应用问题 - 消息可靠性保障 (思路)

RabbitMQ 应用问题 - 消息可靠性保障 (思路)

  • 消息可靠性保障
    • 消息补偿机制

  • 需求:
    • 100%确保消息发送成功

  • 消息可靠性保障–消息补偿
    在这里插入图片描述

  • 步骤(正常情况):

    1. Producer先入库
    2. 发送消息给Q1
    3. Consumer会拿着Q1的消息去消费
    4. Consumer消费之后也操作自己的数据库
  • 步骤(不正常情况):

    1. Producer先入库
    2. 发送消息给Q1(失败)
    3. Consumer收不到消息(操作同样失败)
    4. 不会发送确认消息
  • 全套步骤:

    1. Producer先入库
    2. 发送消息给Q1
    3. Consumer会拿着Q1的消息去消费
    4. Consumer消费之后也操作自己的数据库
    5. Consumer发送确认信息(转换角色变成生产端)
    6. Consumer发送消息给Q2
    7. 监听确认消息
    8. 将消息写入到消息的数据库表里
    9. 此时延迟发送消息Q3(等上两三分钟)
    10. 但是我们的回调检查服务也监听着Q3
    11. 收到的消息跟Q1、Q2消息的id是一样的
    12. 回调检查服务比对当前的消息和刚才写入的消息id是否一致,如果一直该消息肯定被消费过的
    13. 如果一致则不管
    14. 如果不一致回调检查服务跟Priducer说一声让它重新发(重新走2,3)

  • 如果发送消息和延迟发送都失败了
    • 我们有定时检查服务
      • 比如一个小时
        • 我们就去检查消息写入数据库MDB和业务数据库DB的数据是否匹配
        • 如果都没发出去,业务DB的消息肯定比MDB的消息要多
        • 那么我们定时检查服务去通知Producer重新发送消息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值