MQ异常, 补发消息

需求

背景
  • MQ 发送消息失败, 导致依赖MQ的相关业务无法正常处理
    • 如: LB 负载连接断开,导致 mq 连接超时,发消息失败
目的
  • 重要业务,mq消息需要补发

方案设计

定义需补发的业务级别
  • 业务

    • 收徒
    • 订单
  • 方案

    • 注册补发业务
      • 格式
        # MQ 使用需要进行备份,异常补发的业务
        MQ_CHECK_JOBS = [
            {
                 
                "title": "收徒奖励 JOB",
                "exchange": "xxx.topic",
                "routing_key": "xxxx.success.#",
                "level": 0,  # 业务级别,暂时无用
                "queues": ["xx.complete_shoutu_delay"]
            }
        ]
        
      • 操作
        • 1.重要业务,发送mq前,插入发送日志
        • 2.携日志唯一单号,发送至 MQ
        • 3.MQ消费者消费消息
          • 3.1 先 check 是否是重要业务
          • 3.2 记录消息日志
          • 3.3 记录成功之后做业务操作
      • 异常补发
        • 提供补发JOB, 按照天对生产消息记录和消息消息记录进行比对
        • 查出未没有消费记录的消息,进行补发
        • 实时方案
          • 例1:生产者发了,消费者没有消费
            • 检查 mq_producter_msg 中的数据
            • 带 id 获取消费记录 mq_consumer_msg
            • 检查 mq_producter_msg,中的每条数据对应的 queues(注册时关联) 是否有记录
            • queues 消费记录完整则已正常消费,否则补发
            • 多个消费者要支持重复消费
      • 其他
        • MQ 消费者业务处理,应保证可重复接受消息(消息消费日志可以也保证)

表设计

mq 补发消息表
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值