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

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

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

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

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

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

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


person dkamins    schedule 10.12.2010    source источник
comment
Хм, это действительно субъективно и не имеет определенных ответов. Может быть, лучше подходит для программистов?   -  person Gordon    schedule 10.12.2010
comment
Возможно, но хотелось бы увидеть обсуждение. Это проблема, с которой сейчас сталкивается наш большой проект.   -  person aib    schedule 10.12.2010
comment
Список клиентов теперь находится по адресу rabbitmq.com/download.html с дополнительными клиентами для других языков. на rabbitmq.com/devtools.html   -  person PapaFreud    schedule 16.04.2013


Ответы (6)


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

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

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

person Pieter    schedule 11.12.2010
comment
Спасибо за публикацию, @Pieter. Можете ли вы прокомментировать уровень текущего развития и ресурсы, которыми располагает ваша команда? Насколько тесно (если вообще) вы работаете или координируете выпуски либо с командой librabbitmq, либо с самим RabbitMQ (оба из которых будут меняться по мере того, как AMQP будет развиваться до версии 1.0 и т. д.)? - person dkamins; 11.12.2010
comment
Как мы можем помочь перенести его на Windows? Каковы зависимости? - person aib; 11.12.2010
comment
@dkamins: у нас есть два ресурса, которым поручено устранить ошибку этого расширения и обеспечить ее совместимость с последними версиями RabbitMQ и базового клиента C. Последнее является экспериментальным, поэтому иногда это сложно, но это требование уровня производства, поэтому мы должны приложить усилия. Мы еще не на том этапе, когда мы координируем выпуски, но я надеюсь, что смогу сделать это для следующих основных версий. - person Pieter; 12.12.2010
comment
@aib: зависимость — это базовая библиотека C, которую мы используем. Как и в случае с расширениями memcache, мы обертываем стандартную библиотеку C, и, поскольку библиотека C еще не на 100% работает в Windows, мы застряли. Все сообщество RabbitMQ прилагает значительные усилия, чтобы заставить его работать в Windows, и, насколько мне известно, мы очень близки к тому, чтобы это сделать. - person Pieter; 12.12.2010
comment
@Pieter Не могли бы вы изучить этот вопрос с наградой +50. Я изучаю реализацию RabbitMq с помощью PHP и буду очень признателен за вашу помощь. Спасибо stackoverflow.com/questions/9151698 - person jeff musk; 19.02.2012
comment
Мы пытаемся заставить скрипт работать 24/7 на нашем сервере ... и я знаю, что есть такие вещи, как сердцебиение и поддержка активности, которые я могу «взломать», но почему нет прямого способа сообщить об этом не увольнять бездействующих потребителей (ни в конструкторе соединений, ни в общедоступном способе настройки пульса)? - person Nasaralla; 03.01.2013
comment
Кроме того, посмотрите этот пост для компиляции rabbitmq-c и установки PECL ampq: thegeekstuff.com/2013/05/amqp-php-extension/comment-page-1/ - person DaveO; 23.05.2013
comment
Кажется, что-то не так со ссылкой, размещенной в ответе. Где я могу найти документацию для конечного пользователя для этого расширения? - person Luke; 27.04.2014
comment
Другим недостатком является то, что вам нужно быть очень удачливым парнем, чтобы подключиться через SSL/TLS со всеми проблемами сертификатов, с которыми придется столкнуться. - person the_root; 28.08.2018

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

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

Также есть тесты и Travis CI.

person Tomas Dermisek    schedule 01.12.2011
comment
Я использовал эту библиотеку с хорошими результатами до сих пор. Только что обнаружил свой первый недостаток: при принятии Monolog (github.com/Seldaek/monolog) я обнаружил, что он зависит от модуля PECL php-amqp и не может заставить его работать напрямую с php-amqplib, потому что он не предоставляет AMQPExchange как объект, как предыдущий. Необходимо изменить обработчик AMQP Monolog или php-amqplib, чтобы правильно их связать. - person Rodrigo Neves; 27.05.2013

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

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

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

person dkamins    schedule 10.12.2010
comment
Ага. Я предпочел php-amqplib, потому что он больше всего походил на python-amqplib. Я (да, том.биоинф это я) написал патч, который надо было поставить, и багажник бы не сломался ;) Но поехали. - person Tom O'Connor; 11.12.2010
comment
@ Том, ты все еще используешь php-amqplib? - person dkamins; 11.12.2010
comment
Не лично. Я написал этот патч, когда был на другой работе, я думаю, что они все еще используют его, но я сомневаюсь, что они обновились с тех пор. В целях тестирования я более чем счастлив снова использовать php-amqplib - person Tom O'Connor; 11.12.2010

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

Бонус: https://github.com/tnc/php-amqplib используется в книге MEAP. «Кролик в действии». Повлияет ли это на его принятие, пока неизвестно.

person dimdm    schedule 10.12.2010
comment
Согласно документации к версии tnc, он переехал сюда: github.com /videlalvaro/php-amqplib . - person Mei; 16.05.2012

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

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

person aib    schedule 10.12.2010
comment
Интересный. Меня привлекла простота клиента, работающего только на PHP, но вы поднимаете хорошие оценки. - person dkamins; 11.12.2010
comment
Кстати, для github.com/bkw/php-amqp требуется библиотека bc_math php.net/manual/en/ref.bc.php - person Lester Chan; 15.02.2011

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

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

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

person Maksim Kotlyar    schedule 02.08.2017