Лучшая клиентская библиотека PHP для доступа к RabbitMQ (AMQP)?

Существует список клиентов PHP на сайте RabbitMQ. Я задаю этот вопрос в надежде, что люди, которые использовали любой из них, могут поделиться своим опытом здесь. Например.

  • У вас возникли проблемы с установкой?
  • Является ли он стабильным?
  • Были ли проблемы с производительностью?
  • Как документация/поддержка?

Даже если вы только что использовали одну из этих библиотек, поделитесь своими впечатлениями.

Для справки, вот некоторые из перечисленных клиентов:

P.S. Я знаю, что "Лучшее..." является "субъективным", но суть этого вопроса заключается в том, чтобы собирать опыт и помогать людям принимать обоснованное решение об этих библиотеках AMQP. Пожалуйста, не перегибайте этот вопрос только потому, что в нем есть слово "лучший".

P.P.S. Я использую PHP 5.3 на RHEL 5.

Ответ 1

Для справки Расширение PECL AMQP и http://php.net/manual/fa/book.amqp.php - одно и то же, один - это пакет, другой - документация для пакета.

Как сторонник официального расширения PHP AMQP, я немного предвзятый. Многие используют это расширение в средах с высокой производительностью с низкой задержкой, поскольку оно намного быстрее, чем одно из написанных на родном PHP. Кроме того, поскольку я постоянно использую это на своей работе, я должен держать его в рабочем состоянии и обновляться.

Недостатком этого расширения является то, что он недоступен для Windows, но потому, что в настоящее время портируется библиотека, от которой оно зависит. Поддержка ETA для Windows не поддерживается, но как только зависимости поддерживают Windows, наша цель - также переносить расширение на Windows.

Ответ 2

Эта библиотека, кажется, жива и преуспевает в оригинале от code.google:

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

Существуют также тесты и Travis CI.

Ответ 3

Некоторая информация из первоначального обзора:

https://github.com/tnc/php-amqplib раздвоенный http://code.google.com/p/php-amqplib/ в неизвестном месте в прошлом и не имеет четкой истории или показывает, что изменилось, что приводит к неудачной фрагментации усилий. Кроме того, похоже, что НЕ соблюдается исправление, применяемое к оригиналу, число из которых появилось за последние несколько месяцев.

Также http://code.google.com/p/php-amqplib/ теперь больше не находится под активной разработкой, а плоский патч был применен в течение месяца назад, оставив багажник в разбитом состоянии. (Я представил исправление, но это плохой знак).

Ответ 4

Там также https://github.com/bkw/php-amqp/, который я считаю зеркалом http://code.google.com/p/php-amqplib/. У меня были некоторые проблемы с этим кодом: обратите внимание на сообщения во время нормальной работы и всевозможные ошибки и предупреждения, когда что-то не так. Этот код также воспринимает ручное слово PHP как должное; например, вызовы чтения сокетов проверяются только с возвратом ошибки, в то время как на самом деле я просто обнаруживаю, что закрытие/тайм-аут сокета может указываться любым из четырех различных условий.

Я начинаю думать, что скомпилированное библиотечное решение (то есть расширение PHP) является наилучшим вариантом, особенно потому, что есть проблемы с потоками и сокетами, а PHP плохо работает.

Ответ 5

Посмотрев как на php-amqp, так и на версию PECL, мои впечатления о том, что базовая поддержка публикации и потребления сообщений реализована. Тем не менее, они будут работать только из коробки на платформах * NIX. Вам придется перепрыгнуть через обручи, чтобы заставить их работать в Windows (что может быть или не быть проблемой в зависимости от платформы разработки или развертывания).

Бонус: https://github.com/tnc/php-amqplib используется в книге MEAP "RabbitMQ in Action". Будет ли это иметь какое-либо влияние на его принятие, еще предстоит выяснить.

Ответ 6

Мы работаем над amqp interop. Он пытается идентифицировать и стандартизировать общий способ для программ PHP создавать, отправлять, получать и читать сообщения MQ через AMQP для обеспечения интероперабельности.

Если вы сделаете ставку на нее, вы можете начать с любого совместимого с транспортом транспорта. Вы все равно сможете изменить его в будущем, вы не заперты.

В настоящее время мы поддерживаем enqueue/amqp-ext и enqueue/AMQP Пб. Первый работает поверх расширения php amqp, где другой принимает phpamqplib.