我正在使用RabbitMQ和芹菜,我已经为任务设置了一些自定义路由设置。特定类型的任务进入一个队列,所有其他任务进入另一个队列。现在我想验证它是否工作。
对于这个,我想检查哪个任务进入了哪个队列。不幸的是,我没有找到任何可以帮助我的东西。Celeryev monitor只提供关于已接收到哪些任务及其完成状态的信息。rabbitmqctl只给我当前正在运行和等待的任务的信息——所以我不能看到我预期的任务去了哪个队列。
有谁能帮我一下吗?通常不能使用AMQP检查队列上的消息(但不能确定芹菜)。
如果您只需要将其作为一次性测试,最简单的方法可能是用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讨论邮件列表。RabbitMQ的开发人员尽他们最大的努力来回答所有的问题,芹菜的作者也阅读了它。