2011-07-19 16 views
0

我使用RabbitMQ的芹菜和我已經爲任務的一些自定義的路由設置。特定類型的任務轉到一個隊列,所有其他任務轉到另一個隊列。現在我想驗證它是否正常工作。查找哪個任務去哪個隊列

對於這一點,我要檢查哪些任務去哪個隊列。不幸的是,我沒有找到任何可以幫助我的事情。 celeryev監視器只提供有關已收到哪些任務的信息以及它們的完成狀態。 rabbitmqctl只給我關於當前正在運行和等待的任務的信息 - 所以我看不到我想要的任務去往哪個隊列。

任何人都可以幫助我嗎?

回答

1

你通常無法對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 Discuss郵件列表。 RabbitMQ開發者盡最大努力回答所有發佈在那裏的問題,而Celery的作者也閱讀它。

+0

感謝。您提供的信息對我正在進行的任務非常有用 - 雖然不是專門針對此問題。我們稍微改變了需求,我想檢查的是路由是否正確發生。這是我通過排隊任務,但與我的消費者/經紀人不UP。所以這些工作被放在隊列中,然後通過rabbitmqctl -list_queues檢查它們,證明我的路由是否正確(在我的情況下是不正確的!)或不。 py-ampqlib幫助我處理其他任務,這個任務是檢查我的服務器密度配置與RabbitMQ是否正確。謝謝。 – Siddharth