Лучшая клиентская библиотека 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.