用于访问RabbitMQ(AMQP)的最佳PHP客户端库?
在RabbitMQ网站上有一个PHP客户端列表 。 我正在问这个问题,希望那些使用过这些的人能够在这里分享他们的经验。 例如
- 你有没有麻烦安装?
- 它是稳定的吗?
- 有没有任何性能问题?
- 文档/支持如何?
即使您刚使用过这些库,请分享您的经验。
作为参考,这里列出的一些客户:
- AMQP的PHP手册页
- php-amqp – 由StudiVZ开发和使用的客户端,最初基于RabbitMQ-C
- php-amqplib是py-amqplib的一个端口
- php-amqplib更新了php-amqplib的分支,以支持PHP 5.3
- AMQP客户端的PECL版本
PS我知道“最佳…”是“主观的”,但这个问题的重点是收集经验,帮助人们对这些AMQP图书馆做出明智的决定。 请不要因为它里面有“最好”这个词而下意识地closures这个问题。
PPS我在RHEL 5上使用PHP 5.3。
作为参考, PECL AMQP扩展和http://php.net/manual/fa/book.amqp.php是一回事,一个是包,另一个是包的文档。;
作为官方PHP AMQP扩展的维护者,我有点偏见。 许多人在大批量低延迟的生产环境中使用这种扩展,因为它比原生PHP编写的要快得多。 而且,由于我经常在工作中使用这个工具,所以我必须保持工作并保持最新状态。
这个扩展的缺点是,它不适用于Windows,但是,它所依赖的库目前正在移植。 Windows支持没有ETA,但只要依赖关系支持Windows,我们的目标就是将扩展移植到Windows。
初步审查的一些信息:
https://github.com/tnc/php-amqplib在http://code.google.com/p/php-amqplib/处于过去未知的状态,并没有明确的历史logging或显示发生了什么变化,这导致了不幸的分裂。; 它似乎也没有跟上原来应用的错误修正,其中一些已经在最近几个月出现了。
另外, http://code.google.com/p/php-amqplib/本身现在似乎已不再处于积极的发展阶段,一个月前应用了一个不好的补丁,导致中继线处于故障状态。; (我提交了一个补丁来解决这个问题,但这是一个不好的迹象)。
考虑到php-amqp和PECL版本,我的印象是实现了对发布和消费消息的基本支持。 但是,他们只能在* NIX平台上开箱即用。 你将不得不跳过这些环节,使他们在Windows上工作(根据你的开发或部署平台,这可能也可能不成问题)。
奖励: https : //github.com/tnc/php-amqplib在MEAP书籍“RabbitMQ in Action”中使用。 这是否会对其采用产生影响还有待观察。
还有https://github.com/bkw/php-amqp/ ,我认为它是http://code.google.com/p/php-amqplib/的镜像。; 我在代码方面遇到了一些麻烦:在正常运行时注意消息以及出现错误时的各种错误和警告。 该代码也认为PHP手册的字是理所当然的; 例如,套接字读取调用只针对错误返回进行检查,而实际上,我只是发现套接字closures/超时可能由4个不同的条件中的任何一个指示。
我开始认为,编译的库解决scheme(即PHP扩展)是最好的select,特别是因为存在线程和套接字问题,并且PHP处理不好。
我们正在开发amqp interop 。 它试图识别和标准化PHP程序通过AMQP创build,发送,接收和读取MQ消息以实现互操作性的常见方式。
如果您下注,您可以从任何兼容Interop的交通工具开始。 你将来仍然可以改变它,你没有被locking。
我们目前支持enqueue / amqp-ext和enqueue / amqp-lib 。 首先在php amqp扩展之上工作,另一个采用phpamqplib。