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

Мы используем ActiveMQ, php и stomp. И мы обнаружили, что при перезагрузке ActiveMQ потребители, работающие через Stomp, не могут распознать потерянное соединение. Я обнаружил, что только Stomp 1.2 поддерживает сердцебиение. А ActiveMQ использует stomp 1.1, а новейшая реализация php stomp поддерживает только версию 1.0.
Также я пробую amqp, но новейшая реализация, которую я нашел для поддержки php 0.9.1, ActiveMQ использует версию 1.0 и при подключении клиента 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 для включения?

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

2

Решение

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

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

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

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

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]