代码之家  ›  专栏  ›  技术社区  ›  aaron

RabbitMQ有不可见的队列消息

  •  0
  • aaron  · 技术社区  · 4 年前

    在过去的几天里,我的RMQ服务器一直在收集从未从队列中清除的消息。我将RMQ用作celery任务代理,消息在celery主工作队列中累积:

    enter image description here

    当任务通过管道传入、处理,然后再次空闲时,队列会间歇性地切换到活动状态。然而,这21条信息是永久存在的。当我点击 celery

    enter image description here

    我尝试过通过URL端点检查消息 https://<user>:<password>@<host url>/api/queues/%2f/celery . 我能看到 message_stats 有21条信息,但我无法单独检查这些信息:

     'message_stats': {'ack': 274597,
      'ack_details': {'rate': 0.0},
      'deliver': 274634,
      'deliver_details': {'rate': 0.0},
      'deliver_get': 274634,
      'deliver_get_details': {'rate': 0.0},
      'deliver_no_ack': 0,
      'deliver_no_ack_details': {'rate': 0.0},
      'get': 0,
      'get_details': {'rate': 0.0},
      'get_empty': 0,
      'get_empty_details': {'rate': 0.0},
      'get_no_ack': 0,
      'get_no_ack_details': {'rate': 0.0},
      'publish': 274618,
      'publish_details': {'rate': 0.0},
      'redeliver': 16,
      'redeliver_details': {'rate': 0.0}},
     'messages': 21,
     'messages_details': {'rate': 0.0},
    

    我有两个问题:

    1. 我是否应该使用其他rmqapi端点来进行单独级别的消息检查?我尽量避免仅仅为了调试而启动flower服务器。
    1 回复  |  直到 4 年前
        1
  •  0
  •   José M    4 年前

    剩下的消息是 unacked ,这意味着他们被发送到一些尚未确认的消费者。

    如果您手动关闭队列连接或未能从管理UI确认它们的使用者,则它们应还原为 ready 陈述并准备好再次消费。