2011-02-17 79 views

回答

18

皮卡是RabbitMQ推薦的圖書館,並且py-ampqlib也被提及。根據您使用的是Rabbit,您可能還需要查看Celery(專用於分佈式排隊的客戶端庫)。

同樣,根據使用情況,您可能還想看看Apache的qpid,這是一個完全基於AMPQ的客戶端服務器,替代RabbitMQ。吸引我們參與qpid的一件事是,它似乎在服務器崩潰時具有更好的健壯性(隊列以分佈式方式持久存在)。

+6

我剛剛發現,芹菜創建一個隊列每個任務這是一個令人失望的弱點http://celeryproject.org/docs/userguide/tasks.html#amqp-result-backend – 2011-04-26 07:29:10

+0

我們還沒有發現這是一個問題;我們的使用任務很快就會消耗殆盡(我們很少期望任何事情都會持續幾秒鐘)。它也可能是特定於實現的 - 它們在那裏特別提到了RabbitMQ。我有興趣知道它是否會給你造成困難。 – SteveMc 2011-04-26 19:24:50

+0

從未嘗試芹菜,因爲它似乎不適合整體AMQP架構。消息隊列不僅用於將任務分配給工作人員池。 – 2011-04-27 00:54:30

1

我目前正在使我們的Python應用程序使用SSL。我最初並沒有開發這個應用程序(我也不是Python開發人員),所以我對它不太瞭解,但我們似乎使用AMQP Client in Twisted

QPid也有一個。再次,我不知道質量。

22

我自己的研究讓我相信,正確的庫使用將是Kombu,因爲這也是芹菜(由@SteveMc提到)已經過渡到。我也使用RabbitMQ,併成功使用Kombu與默認的amqplib後端。

Kombu在相同的API後面也支持other transports。如果您需要更換AMQP或添加諸如redis之類的東西,那麼這很有用。雖然沒有嘗試過。

旁註:Kombu目前不支持最新的pika發佈(因爲某些原因,您應該依賴它)。目前只支持5.2.0,這有點讓我回想起來。

2

看過所有這些圖書館後,我現在確信沒有一個是正確的答案。相反,建立一個抽象層作爲你選擇的任何庫的基礎,因爲你一定會遇到必須改變庫的情況。

但是請記住,如果您堅持使用相同版本的AMQP協議,這些庫可以互操作。由於不同的庫正在測試,我們有部分原型應用程序運行pika,kombu和py-amqplib。

閱讀這個博客約replacing amqplib with pika爲什麼這是一個好主意的感覺。