RabbitMQ - Python/Pika如何知道队列是否为空?

wlwcrazw  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(2)|浏览(273)

如果我表达不正确,也会在此处描述我的想法(Send images with their names in one message - RabbitMQ (Python 3.X)
我目前遇到RabbitMQ问题---〉
我创建了一个工作队列,多个消费者同时在该队列上工作,这是一个容器化的图像处理,它给出一个包含所请求信息的字符串输出。
当处理完成时,结果必须在另一个队列上发送,但是我如何知道包含图像的队列是否为空,并且没有更多的工作要做?我想知道类似“如果队列为空,则发送结果......”这样的命令是否可以粗略地说一下。
感谢您的参与,祝您愉快。

smtd7mpg

smtd7mpg1#

您可以对队列进行被动声明以获取消息计数,但这可能不可靠,因为返回的计数不包括处于“未确认”状态的消息。您可以通过HTTP API查询队列的计数。
或者,发布图像的任何应用程序都可以发送“no more images”消息,以指示没有更多的工作要做。接收该消息的使用者可以查询HTTP API,以确认没有消息处于Ready或Unacked状态,然后将结果发送到下一个队列。

**注意:**RabbitMQ团队监控rabbitmq-users邮件列表,仅在某些时候回答StackOverflow上的问题。

dhxwm5r4

dhxwm5r42#

你好,我想你可以用queue_declare来解决这个问题。

status = channel.queue_declare(queue_name, passive=True)
       if status.method.message_count > 5:
          return True
       log.error(f'{queue_name} has no message or less than 5 messages')
       return False

相关问题