2015-12-11 6 views
2

Мы используем ActiveMQ, php и топаем. И мы обнаружили, что при перезагрузке ActiveMQ потребители, работающие над stomp, не могут распознать потерянное соединение. Я обнаружил, что только stomp 1.2 поддерживает сердцебиение. А ActiveMQ использует stomp 1.1, а новейшая поддержка php stomp поддерживает только версию 1.0. Также я стараюсь AMQP, но самая новая реализация, что я нашел для поддержки PHP 0.9.1, ActiveMQ использует версию 1.0, а когда клиент подключения ActiveMQ вернуть ошибку:Какой транспорт ActiveMQ я должен выбрать?

WARN | Connection attempt from non AMQP v1.0 client. AMQP,0,0,9,1 
WARN | Transport Connection to: tcp://127.0.0.1:42168 failed: org.apache.activemq.transport.amqp.AmqpProtocolException: Connection from client using unsupported AMQP attempted 

Также я пытаюсь скомпилировать qpid протона, но у меня есть некоторые проблемы в ubuntu и я смущен их примерами php: https://qpid.apache.org/releases/qpid-proton-0.8/messenger/php/examples/recv.php.html Где я могу найти proton.php для включения?

Какой транспорт я должен выбрать?

+0

Извините, qpid протона, а не pqid proton. Просто опечатка. – Hayate

+0

STOMP v1.1 и v1.2 поддерживают поддержку сердечных сокращений, ActiveMQ поддерживает протокол STOMP 1.0, 1.1 и 1.2 –

+0

Но до сих пор не удается найти реализацию php с помощью heartbeats :( – Hayate

ответ

-1

Кажется, что у вас есть тупик версий ... нет простого решения.

Возможна установка биения на уровне приложения. Каждые Х секунд сделать: - подключение - отправить в очередь (например, сердцебиения.) - получить из той же очереди - сон на X секунд (X должен быть меньше, чем время, необходимое для перезагрузки ActiveMQ)

Этот Кстати, ваш код поймет, что ActiveMQ был перезагружен, а остальные соединения могут быть сброшены.

Если бы это было возможно для вашего проекта, я бы переключился на RabbitMQ и использовал AMQP с php-amqplib.

+0

Как мы выяснили, когда мы выбираем брокера, у RabbitMQ нет встроенная поддержка запланированных сообщений, что является неотъемлемой частью наших задач и решений. И у нас много опыта с ActiveMQ. Это трудно переключиться на другого брокера. :( – Hayate

+0

Ответ «использовать другой инструмент вместо этого» недостаточно Хороший ответ на заданный вопрос. – RaGe

+0

@RaGe, учитывая комбинацию языка, используемых библиотек и требований ... Есть не так много других вариантов, но я был бы рад услышать их ... – jarias