查找哪个任务进入哪个队列

时间:2011-07-19 11:17:06

标签: rabbitmq celery

我正在使用RabbitMQ和Celery,我为该任务设置了一些自定义路由设置。特定类型的任务进入一个队列,所有其他任务进入另一个队列。现在我想验证它是否正常工作。

为此,我想检查哪些任务进入哪个队列。不幸的是,我找不到任何可以帮助我的东西。 celeryev monitor只提供有关已收到哪些任务以及它们的完成状态的信息。 rabbitmqctl只向我提供有关当前运行和等待任务的信息 - 所以我无法看到我的预期任务到哪个队列。

有人可以帮我吗?

1 个答案:

答案 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的作者也会读到它。