2010-12-10 102 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。