EDIT2 : Моя проблема здесь была вызвана недостаточным пониманием того, как транспортные соединители работают в ActiveMQ. TL; DR означает, что ActiveMQ будет неявно «преобразовывать» или «ретранслировать» сообщения между конфигурациями вашего транспортного соединителя, определенными в activemq.xml.
EDIT : Дополнительная информация, сообщения STOMP, полученные приложением Angular, используются для отладки и демонстрации. Следовательно, достаточно просто преобразовать сообщение OpenWire в блок читаемого текста.
Я создаю приложение Angular (предпочтительно веб-сайт, избегая нативных приложений), цель которого - «подключиться» через веб-сокеты на сервере ActiveMQ и подписаться на сообщения OpenWire. Как я могу позволить ActiveMQ преобразовывать сообщения OpenWire в сообщения STOMP и отправлять их любым клиентам (например, моему приложению Angular), подключенным к разъему ActiveMQ WebSocket?
Кроме того, было бы неплохо иметь возможность преобразовать STOMP в OpenWire.
- Это должно быть Angular
- Избегать использования собственных приложений на стороне клиента предпочтительнее, но не нарушает договоренности.
- Добавление дополнительной нагрузки на сервер ActiveMQ следует выполнять с осторожностью.
- Насколько я знаю, Angular может "напрямую общаться" с сервером ActiveMQ только с помощью сообщений STOMP, отправляемых через веб-сокет, если я не хочу использовать собственные приложения.
- У меня уже есть приложение Angular, способное к STOMP-связи через веб-сокеты (например, что-то вроде https://github.com/stomp-js/ng2-stompjs-angular7).
- Мне не хватает информации о том, как настроить сервер ActiveMQ для преобразования OpenWire -> STOMP через его транспортные разъемы.
В моем понимании, то, что я пытаюсь сделать, должно быть возможным. Это отмечают другие пользователи, но не как. Например. пользователи намекают, что то, что я хочу, возможно в ActiveMQ, но не в Apollo: переход с ActiveMQ на Apollo, конфигурация протокола Openwire на Stomp .
Я ожидаю (предпочтительно) необходимость использовать что-то вроде преобразователя ActiveMQ (например, добавление преобразователя в конфигурацию соединителя: AMQP & Openwire - брокер Activemq и 2 разных потребителя ) или, возможно, написание плагина ActiveMQ ( http://activemq.apache.org/developing-plugins.html). На веб-сайте ActiveMQ упоминается существующий преобразователь (http://activemq.apache.org/stomp.html Раздел «Преобразования сообщений»):
В настоящее время ActiveMQ поставляется с преобразователем, который может преобразовывать текст XML / JSON в объекты Java
... но нет упоминания о том, как это использовать, и я не уверен, смогу ли я извлечь из этого пользу, и означает ли это, что для OpenWire -> STOMP или наоборот нет преобразователей.
Полагаю, что я мог неправильно понять некоторые концепции, и «хороший ответ - вы идете в неверном направлении» может послужить хорошим ответом для меня. На момент написания статьи я ожидал, что мне придется создать плагин ActiveMQ, используя их интерфейс Message Transformer (http://activemq.apache.org/message-transformation.html), хотя их подлинки 404. Я надеюсь найти более простое решение, например, существующее OpenWire-- > STOMP трансформатор:
<transportConnector name="openwire" uri="{some-openwire-uri}?transport.transformer=stomp"/>