Le routage simple des points de terminaison TCP dans activemq vous pose problème?
-
06-07-2019 - |
Question
J'essaie de lancer une démonstration simple avec ActiveMQ qui montrera une route TCP à TCP. Je code les points de terminaison et les routes dans un contexte de chameau dans mon fichier de configuration 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>
Avez-vous une idée du pourquoi cela ne fonctionne pas?
Le serveur AMQ ne semble pas ouvrir de port d'écoute.
Éditer: l’intention ici, en tant que simple station de démonstration, est de se connecter à ActiveMQ avec deux terminaux telnet (A et B) et de pouvoir acheminer des messages de l’un à l’autre via le serveur de file d’attente. Plus tard, je pourrai essayer de filtrer ou de router en fonction du contenu.
La solution
Je suis un peu dérouté par votre fichier de configuration. Qu'est-ce que vous essayez de faire exactement?
Vous avez défini 2 points de terminaison pour utiliser MINA (qui n'utilisera pas ActiveMQ du tout); vous utilisez ensuite une route allant d'une file d'attente ActievMQ listener_A à listener_B, puis listener_B à listener_A (qui est une boucle récursive).
Peut-être que si vous commencez à décrire ce que vous voulez faire, nous pourrons comprendre à quoi le XML devrait ressembler.
Incidemment, si vous souhaitez simplement faire référence aux points de terminaison que vous avez définis, utilisez l'attribut ref = "name" plutôt que uri = "...". .
par exemple
<route>
<from ref="listener_A"/>
<to ref="listener_B"/>
</route>
Tout cela étant dit - vous avez tendance à être meilleur & amp; assistance plus rapide sur Camel via le Forum des utilisateurs de Camel
Autres conseils
Plus d'informations à ce sujet:
Lorsque le point de terminaison est défini en tant que connexion mina tcp, il ne peut pas être identifié en tant que "activemq :: listener_A".
<endpoint id="listener_A" uri="mina:tcp://localhost:42000?sync=false&textline=true"/>
c'est faux:
<from uri="activemq:listener_A"/>
cela fonctionne:
<from ref="listener_A"/>
ainsi fait:
<from ref="mina:tcp://localhost:42000?sync=false&textline=true"/>