Semplice routing degli endpoint TCP in activemq cosa c'è che non va?
-
06-07-2019 - |
Domanda
Sto cercando di avviare una semplice demo con ActiveMQ che mostrerà una route da TCP a TCP. Sto codificando gli endpoint e le rotte in un contesto cammello nel mio file di configurazione 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>
Hai idea del perché questo non funziona?
Sembra che il server AMQ non stia aprendo una porta di ascolto.
Modifica: l'intento qui, come semplice demonstation, è connettersi ad ActiveMQ con due terminali telnet (A e B) ed essere in grado di instradare i messaggi l'uno dall'altro attraverso il server della coda dei messaggi. In seguito, potrei provare a filtrare o instradare in base al contenuto.
Soluzione
Sono un po 'confuso dal tuo file di configurazione. Cosa stai cercando di fare esattamente?
Sono stati definiti 2 endpoint per l'utilizzo di MINA (che non utilizzerà affatto ActiveMQ); quindi stai utilizzando una route da una coda ActievMQ listener_A a listener_B quindi listener_B a listener_A (che è un ciclo ricorsivo).
Forse se inizi a descrivere cosa vuoi fare, possiamo capire come dovrebbe apparire l'XML.
Per inciso, se si desidera solo fare riferimento agli endpoint definiti, utilizzare l'attributo ref = " name " anziché uri = " ... " .
per es.
<route>
<from ref="listener_A"/>
<to ref="listener_B"/>
</route>
Detto questo, tendi a migliorare & amp; supporto più veloce su Camel tramite il Forum degli utenti Camel
Altri suggerimenti
Altre informazioni al riguardo:
Quando l'endpoint è definito come una connessione mina tcp, non può essere identificato come " activemq :: listener_A "
<endpoint id="listener_A" uri="mina:tcp://localhost:42000?sync=false&textline=true"/>
questo è sbagliato:
<from uri="activemq:listener_A"/>
funziona:
<from ref="listener_A"/>
così:
<from ref="mina:tcp://localhost:42000?sync=false&textline=true"/>