确保mq消息成功投递的解决方案

在这里插入图片描述

  • 消息首先进行写盘操作,并赋予一个状态值(未投递-0,投递成功-1),之后进行消息投递,等待MQ
    Broker返回消息确认接收命令,知道接收到成功命令,再将消息状态值改为投递成功,否则默认消息投递失败,消息的状态值不变。

投递失败消息处理方式

  • 设置一个分布式定时任务(如果是多个服务,使用单点任务容易出现消息重复抓取的问题),定期去抓取消息状态值为0的消息,对消息进行轮询投递。设置一个消息投递过期时间,若消息投递之后3分钟或5分钟内没有收到消息确认接收命令,则用定时任务进行抓取,设置一个消息最大投递次数,超过最大投递次数,将该消息标记,进行人工处理,检查是什么原因导致(可能是routing_key设置不对,或者网络断点,rpc协议会出现网络断点的情况)
  • 注意:
  • 该方案会执行多次入库操作,因此不适用高并发场景。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐