2010-12-10 45 views
36

有一個list of PHP clients on the RabbitMQ site。我在問這個問題,希望那些已經使用過這些的人可以在這裏分享他們的經驗。例如。用於訪問RabbitMQ(AMQP)的最佳PHP客戶端庫?

  • 安裝有問題嗎?
  • 它是否穩定?
  • 是否有任何性能問題?
  • 文檔/支持如何?

即使您剛使用過其中一個庫,請分享您的經驗。

僅供參考,這裏有上市的一些客戶:

P.S.我知道「最佳...」是「主觀的」,但這個問題的重點在於收集經驗並幫助人們對這些AMQP庫做出明智的決定。請不要因爲它裏面有「最好」的字眼而關閉這個問題。

P.P.S.我在RHEL 5

使用PHP 5.3
+1

嗯,它確實是主觀的,並沒有明確的答案。可能更適合*程序員*? – Gordon 2010-12-10 08:35:29

+2

也許,但我想看看討論。這是我們這個大項目目前面臨的問題。 – aib 2010-12-10 14:50:19

+0

客戶名單現在位於http://www.rabbitmq.com/download.html,在http://www.rabbitmq.com/devtools.html – PapaFreud 2013-04-16 12:35:26

回答

30

作爲參考,PECL AMQP Extensionhttp://php.net/manual/fa/book.amqp.php是一樣的東西,一個是包,另一個是包的文檔。

作爲官方PHP AMQP擴展的維護者,我有點偏見。許多人在大批量低延遲生產環境中使用這種擴展,因爲它比用本地PHP編寫的擴展速度快得多。此外,由於我經常在工作中使用它,所以我必須保持它的工作和最新狀態。

此擴展的缺點是它不適用於Windows,但是,它所依賴的庫目前正在移植。 Windows不支持ETA,但只要依賴關係支持Windows,我們的目標就是將擴展移植到Windows。

3

從初步審查的一些信息:

https://github.com/tnc/php-amqplib 在過去未知點分叉 http://code.google.com/p/php-amqplib/ 並沒有一個明確的歷史或顯示什麼改變,這導致了不幸的分裂。它似乎也沒有跟上原來應用的錯誤修正,其中一些已經在過去幾個月出現了。

另外http://code.google.com/p/php-amqplib/本身現在看起來不再處於積極的發展狀態,並且在一個月前應用了一個不好的補丁,導致幹線處於故障狀態。 (我提交了一個補丁來解決這個問題,但這是一個不好的跡象)。

+0

上有更多「其他語言的客戶」。我首選php-amqplib,因爲它最像python-amqplib。我(是的,tom.bioinf是我)寫了應該已經應用的補丁,並且不會破壞主幹;)但是我們去了。 – 2010-12-10 22:00:50

+0

@Tom,你還在使用php-amqplib嗎? – dkamins 2010-12-10 23:07:00

+0

不是個人。我在另一份工作上寫了這個補丁,他們仍在使用它,我想,但是我懷疑他們已經升級了..爲了測試目的,我非常樂意再次使用php-amqplib – 2010-12-11 11:09:14

2

還有https://github.com/bkw/php-amqp/,我認爲這是http://code.google.com/p/php-amqplib/的一面鏡子。我在代碼方面遇到了一些麻煩:在正常操作期間發佈消息以及出現問題時發出各種錯誤和警告。該代碼也認爲PHP手冊的字是理所當然的;例如,套接字讀取調用僅針對錯誤返回進行檢查,而事實上我只是發現套接字關閉/超時可能由4種不同條件中的任何一種指示。

我開始認爲編譯的庫解決方案(即PHP擴展)是最好的選擇,特別是因爲存在線程和套接字問題,並且PHP處理得並不好。

2

查看了php-amqp和PECL版本後,我的印象是實現了對發佈和消費消息的基本支持。但是,他們只能在* NIX平臺上開箱即用。您將不得不跳過這些環節以使其在Windows上工作(根據您的開發或部署平臺,這可能會也可能不會成爲問題)。

獎勵:https://github.com/tnc/php-amqplib用於MEAP書籍「RabbitMQ in Action」。這是否會對其採用產生影響還有待觀察。

0

我們正在致力於amqp interop。它試圖識別和標準化PHP程序通過AMQP創建,發送,接收和讀取MQ消息以實現互操作性的常見方式。

如果你下注,你可以從任何互操作兼容的交通工具開始。您仍然可以在將來更改它,但您未鎖定。

我們目前支持enqueue/amqp-extenqueue/amqp-lib。第一個工作在php amqp擴展之上,另一個採用phpamqplib。