有一个list of PHP clients on the RabbitMQ site。我问这个问题,希望那些使用过这些问题的人可以在这里分享他们的经历。 E.g。
即使您刚刚使用过其中一个库,也请分享您的经验。
供参考,以下列出了一些客户:
P.S。我知道“最好......”是“主观的”,但问题的关键在于收集经验并帮助人们对这些AMQP图书馆做出明智的决定。请不要只是因为它里面有“最好”这个词,所以不要试试这个问题。
P.P.S。我在RHEL 5上使用PHP 5.3。
答案 0 :(得分:30)
作为参考,PECL AMQP Extension和http://php.net/manual/fa/book.amqp.php是相同的,一个是包,另一个是包的文档。
作为官方PHP AMQP扩展的维护者,我有点偏颇。许多人在高容量低延迟生产环境中使用此扩展,因为它比用本机PHP编写的扩展速度快得多。此外,由于我在工作中经常使用它,我必须保持它的工作和最新。
此扩展的缺点是它不适用于Windows,因为它所依赖的库当前正在移植。没有ETA for Windows支持,但只要依赖项支持Windows,我们的目标就是将扩展程序移植到Windows上。
答案 1 :(得分:6)
答案 2 :(得分:3)
初步审核的一些信息:
https://github.com/tnc/php-amqplib 岔 http://code.google.com/p/php-amqplib/ 在过去的一个未知点,没有明确的历史或显示改变的内容,这导致了不幸的分裂。它似乎也没有跟上错误修正应用于原始,其中一些已在过去几个月出现。
同样http://code.google.com/p/php-amqplib/本身现在似乎不再处于活跃开发阶段,并且在一个月前应用了一个糟糕的补丁,使得主干处于断开状态。 (我提交了一个补丁来解决这个问题,但这是一个不好的迹象)。
答案 3 :(得分:2)
还有https://github.com/bkw/php-amqp/,我认为它是http://code.google.com/p/php-amqplib/的镜像。我在使用该代码时遇到了一些问题:在正常操作期间注意消息以及在出现错误时发出各种错误和警告。该代码也认为PHP手册的词是理所当然的;例如,套接字读取调用仅针对错误返回进行检查,而实际上我只是发现可以通过4种不同条件中的任何一种来指示套接字关闭/超时。
我开始认为编译库解决方案(即PHP扩展)是最好的选择,特别是因为存在线程和套接字问题,并且PHP处理得很差。
答案 4 :(得分:2)
看过php-amqp和PECL版本后,我的印象是实现了对发布和使用消息的基本支持。但是,它们只能在* NIX平台上开箱即用。您将不得不跳过箍以使它们在Windows上运行(根据您的开发或部署平台,这可能是也可能不是问题)。
奖金:https://github.com/tnc/php-amqplib用于MEAP书“RabbitMQ in Action”。这是否会对其采用产生任何影响还有待观察。
答案 5 :(得分:0)
我们正致力于amqp interop。它试图识别和标准化PHP程序通过AMQP创建,发送,接收和读取MQ消息的通用方法,以实现互操作性。
如果您下注,您可以从任何互操作兼容的传输开始。你以后仍然可以改变它,你没有被锁定。
我们目前支持enqueue/amqp-ext和enqueue/amqp-lib。第一个工作在php amqp扩展之上,另一个采用phpamqplib。