【问题标题】:Best PHP client library for accessing RabbitMQ (AMQP)?访问 RabbitMQ (AMQP) 的最佳 PHP 客户端库?
【发布时间】:2011-05-23 07:16:07
【问题描述】:

有一个list of PHP clients on the RabbitMQ site。我问这个问题是希望用过这些的人可以在这里分享他们的经验。例如

  • 您在安装时遇到问题了吗?
  • 稳定吗?
  • 是否存在任何性能问题?
  • 文档/支持如何?

即使您刚刚使用过其中一个库,也请分享您的经验。

作为参考,这里列出了一些客户:

附:我知道“Best ...”是“主观的”,但这个问题的重点是收集经验并帮助人们对这些 AMQP 库做出明智的决定。请不要仅仅因为它包含“最佳”这个词就下意识地关闭这个问题。

附言我在 RHEL 5 上使用 PHP 5.3。

【问题讨论】:

  • 嗯,这确实是主观的,没有明确的答案。可能更适合程序员
  • 也许吧,但我想看看讨论。这是我们的大项目目前面临的一个问题。
  • 客户列表现在位于rabbitmq.com/download.html,另外的“其他语言客户”位于rabbitmq.com/devtools.html

标签: php rabbitmq amqp


【解决方案1】:

我们正在处理amqp interop。它试图识别和标准化PHP程序通过AMQP创建、发送、接收和读取MQ消息的通用方式,以实现互操作。

如果您下注,您可以从任何兼容互操作的传输开始。将来你仍然可以更改它,你没有被锁定。

我们目前支持enqueue/amqp-extenqueue/amqp-lib。第一个工作在 php amqp 扩展之上,另一个采用 phpamqplib。

【讨论】:

    【解决方案2】:

    作为参考,PECL AMQP Extensionhttp://php.net/manual/fa/book.amqp.php 是同一个东西,一个是包,另一个是包的文档。

    作为 PHP AMQP 官方扩展的维护者,我有点偏见。许多人在大容量低延迟生产环境中使用这个扩展,因为它比用原生 PHP 编写的要快得多。此外,由于我在工作中经常使用它,因此我必须保持它正常工作并保持最新状态。

    这个扩展的缺点是它还不能用于 Windows,因为它所依赖的库目前正在移植。没有针对 Windows 的 ETA 支持,但一旦依赖项支持 Windows,我们的目标就是将扩展也移植到 Windows。

    【讨论】:

    • 感谢发帖,@Pieter。你能评论一下你的团队的持续发展水平和资源吗?您与 librabbitmq 团队或 RabbitMQ 本身(两者都将随着 AMQP 成熟到 1.0 等而发生变化)合作或协调发布的紧密程度(如果有的话)?
    • 我们如何帮助将其移植到 Windows?依赖关系是什么?
    • @dkamins:我们有两个资源负责保持这个扩展没有错误,并与最新版本的 RabbitMQ 和底层 C 客户端兼容。后者是实验性的,所以有时很难,但这是生产级别的要求,所以我们必须努力。我们还没有协调发布,但我希望能够为下一个主要版本。
    • @aib:依赖是我们使用的底层 C 库。就像 memcache 扩展一样,我们包装了一个标准的 C 库,由于 C 库在 Windows 上还不是 100%,所以我们被卡住了。整个 RabbitMQ 社区都在大力推动它在 Windows 上运行,而 AFAIK,我们非常接近拥有一个。
    • @Pieter 你能用 +50 赏金调查这个问题吗?我正在使用 PHP 探索 RabbitMq 实现,非常感谢您的帮助。谢谢stackoverflow.com/questions/9151698
    【解决方案3】:

    这个库似乎还活着,并且继承了 code.google 的原始库:

    https://github.com/videlalvaro/php-amqplib

    还有测试和 Travis CI。

    【讨论】:

    • 到目前为止,我一直在使用这个库,效果很好。刚刚发现我的第一个缺点:在采用 Monolog (github.com/Seldaek/monolog) 时,我发现它依赖于 PECL php-amqp 模块并且不能让它直接与 php-amqplib 一起工作,因为它不会将 AMQPExchange 作为对象公开像上一个。需要更改 Monolog 的 AMQP 处理程序或 php-amqplib 以正确匹配它们。
    【解决方案4】:

    还有https://github.com/bkw/php-amqp/,我认为它是http://code.google.com/p/php-amqplib/ 的镜像。我在使用该代码时遇到了一些问题:在正常操作期间注意消息以及出现问题时的各种错误和警告。该代码还认为 PHP 手册中的话是理所当然的。例如,套接字读取调用仅针对错误返回进行检查,而实际上我只是发现套接字关闭/超时可能由 4 种不同条件中的任何一种指示。

    我开始认为编译库解决方案(即 PHP 扩展)是最好的选择,特别是因为存在线程和套接字问题,而 PHP 处理这两个问题。

    【讨论】:

    【解决方案5】:

    初步审查的一些信息:

    https://github.com/tnc/php-amqplib 分叉的 http://code.google.com/p/php-amqplib/ 在过去的某个未知时间点,并且没有明确的历史记录或显示发生了什么变化,这导致了不幸的努力碎片化。它似乎也没有跟上应用于原始版本的错误修正,其中一些修正是在过去几个月中出现的。

    此外,http://code.google.com/p/php-amqplib/ 本身现在似乎不再处于积极开发中,并且一个多月前应用了一个糟糕的补丁,导致主干处于损坏状态。 (我提交了一个补丁来解决这个问题,但这是一个不好的迹象)。

    【讨论】:

    • 是的。我更喜欢 php-amqplib,因为它最像 python-amqplib。我(是的,tom.bioinf 就是我)写了应该应用的补丁,并且不会破坏树干;)但是我们走了。
    • @Tom,你还在用 php-amqplib 吗?
    • 不是个人。我在另一份工作时写了那个补丁,我想他们仍在使用它,但我怀疑他们已经升级了..出于测试目的,我非常乐意再次使用 php-amqplib
    【解决方案6】:

    查看了 php-amqp 和 PECL 版本,我的印象是实现了对发布和消费消息的基本支持。但是,它们只能在 *NIX 平台上开箱即用。您将不得不费尽心思才能让它们在 Windows 上运行(这可能是也可能不是问题,具体取决于您的开发或部署平台)。

    奖励:https://github.com/tnc/php-amqplib 在 MEAP 书籍“RabbitMQ in Action”中使用。这是否会对它的采用产生任何影响还有待观察。

    【讨论】:

    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2012-06-03
    • 2011-12-19
    • 2014-02-11
    相关资源
    最近更新 更多