2011-08-15 6 views
0

J'ai un programme en cours d'exécution sur un hôte distant que j'ai besoin de se connecter, handshake, puis écouter les messages. J'ai installé la route de chameau qui suit:communiquer avec l'hôte distant en utilisant camel-netty tcp

<route> 
    <from uri="netty:tcp://localhost:50001?decoders=#decoders&amp;sync=false" /> 
    <bean ref="TransformMessage" method="inboundDecoder" /> 
    <to uri="eventadmin:messages/aacus/inbound" /> 
</route> 

<route> 
    <from uri="eventadmin:messages/aacus/outbound" /> 
    <bean ref="TransformMessage" method="outboundEncoder" /> 
    <to uri="netty:tcp://192.168.0.111:50001?allowDefaultCodec=false&amp;sync=false" /> 
</route> 

Ma question est comment puis-je faire ce travail? Si je l'itinéraire à l'aide établirai

<from uri="netty:tcp://192.168.0.111:50001?decoders=#decoders&amp;sync=false" />

il échoue avec une erreur de liaison.

Comment puis-je configurer la connexion pour répondre sur un port spécifique sans modifier le serveur?

Répondre

1

Ceci n'est pas possible avec camel-mina ni camel-netty à ce moment de l'écriture. Un consommateur peut uniquement lier à un serveur local. Il y a un ticket JIRA chez Apache pour implémenter une nouvelle fonctionnalité pour le futur. https://issues.apache.org/jira/browse/CAMEL-1077

+0

Merci Claus, j'avais peur que ce soit le cas. Plutôt frustrant que cela ne soit pas supporté car cela semble être un cas d'utilisation commun et évident. J'ai travaillé autour de ce problème en implémentant un composant personnalisé pour Camel qui gère ma communication TCP. – Namaste

0

Utilisez la solution suivante:

lieu ob 192.168.0.111 utilisation localhost. Ensuite, installez « socat » et commencer comme suit

socat -s -u tcp4:192.168.0.111:50001 tcp4:localhost:50001 

Cette volonté Tunnel votre connexion à distance au service local créé avec camel/Netty.

Questions connexes