我正在使用RabbitMQ和Celery,我为该任务设置了一些自定义路由设置。特定类型的任务进入一个队列,所有其他任务进入另一个队列。现在我想验证它是否正常工作。
为此,我想检查哪些任务进入哪个队列。不幸的是,我找不到任何可以帮助我的东西。 celeryev monitor只提供有关已收到哪些任务以及它们的完成状态的信息。 rabbitmqctl只向我提供有关当前运行和等待任务的信息 - 所以我无法看到我的预期任务到哪个队列。
有人可以帮我吗?
答案 0 :(得分:1)
您通常无法使用AMQP检查队列中的消息(但不确定Celery)。
如果您只需要将其作为一次性测试,最简单的方法可能是在Python中编写一个快速程序,从队列中获取所有消息并打印出来。
使用py-ampqlib,应该这样做:
from amqplib import client_0_8 as amqp
conn = amqp.Connection(host="localhost:5672", userid="guest", password="guest", virtual_host="/", insist=False)
chan = conn.channel()
queue_name = "the_queue"
print "Draining", queue_name
while True:
msg = chan.basic_get(queue_name)
if msg is None:
break
print msg.body
print "All done"
如果您需要更多帮助,请查询RabbitMQ Discuss邮件列表。 RabbitMQ开发人员尽力回答那里发布的所有问题,Celery的作者也会读到它。