Простая маршрутизация конечных точек TCP в activemq что не так?
-
06-07-2019 - |
Вопрос
Я пытаюсь запустить простую демонстрацию с помощью ActiveMQ, которая продемонстрирует маршрут TCP-TCP.Я кодирую конечные точки и маршруты в контексте camel в моем файле конфигурации activemq.xml.
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
<package>org.myorg.codec</package>
<endpoint id="listener_A" uri="mina:tcp://localhost:42000?sync=false&textline=true"/>
<endpoint id="listener_B" uri="mina:tcp://localhost:42001?sync=false&textline=true"/>
<route>
<from uri="activemq:listener_A"/>
<to uri="activemq:listener_B"/>
</route>
<route>
<from uri="activemq:listener_B"/>
<to uri="activemq:listener_A"/>
</route>
</camelContext>
Есть какие-нибудь идеи, почему это не работает?
Сервер AMQ, похоже, не открывает порт прослушивания.
Редактировать:Цель здесь, как простой демонстрационной станции, состоит в том, чтобы подключиться к ActiveMQ с помощью двух терминалов telnet (A и B) и иметь возможность маршрутизировать сообщения от одного к другому через сервер очереди сообщений.Позже я могу попробовать фильтровать или маршрутизировать на основе содержимого.
Решение
Меня немного смущает ваш конфигурационный файл.Что именно ты пытаешься сделать?
Вы определили 2 конечные точки для использования MINA (которые вообще не будут использовать ActiveMQ);затем вы используете маршрут из очереди ACTIVEVMQ listener_A в listener_B, затем listener_B в listener_A (что является рекурсивным циклом).
Может быть, если вы начнете описывать, что вы хотите сделать, мы сможем понять, как должен выглядеть XML.
Кстати, если вы просто хотите сослаться на определенные вами конечные точки, используйте ref="имя" атрибут , а не uri="...".
например ,
<route>
<from ref="listener_A"/>
<to ref="listener_B"/>
</route>
Учитывая все вышесказанное, вы, как правило, получаете лучшую и более быструю поддержку на Camel через Форум пользователей Camel
Другие советы
Подробнее об этом:
Когда конечная точка определена как минимальное TCP-соединение, ее нельзя идентифицировать как " activemq :: listener_A " Р>
<endpoint id="listener_A" uri="mina:tcp://localhost:42000?sync=false&textline=true"/>
это неправильно:
<from uri="activemq:listener_A"/>
это работает:
<from ref="listener_A"/>
так и делает:
<from ref="mina:tcp://localhost:42000?sync=false&textline=true"/>