2015-03-03 7 views
5

Ich habe die Feder Integration XML-Konfigurations mit Bohnen folgendenWas entspricht <tcp-outbound-channel-adapter> in java config?

<int-ip:tcp-outbound-channel-adapter id="outboundClient" 
channel="input" 
connection-factory="client"/> 

Ich dachte, das Äquivalent in Java Config

@ServiceActivator(inputChannel = "input", requiresReply = "true") 
public TcpSendingMessageHandler outboundClient() { 
    TcpSendingMessageHandler tcpSendingMessageHandler = new TcpSendingMessageHandler(); 
    tcpSendingMessageHandler.setConnectionFactory(clientConnectionFactory()); 
    tcpSendingMessageHandler.setRetryInterval(10000); 
    tcpSendingMessageHandler.setClientMode(true); 
    return tcpSendingMessageHandler; 
} 

jedoch im Protokoll sein würde, ich sehe

TcpListener exiting - no listener and not single use 

und ich kann die Antwort vom Server nicht empfangen.

Jede Hilfe ist

geschätzt

Antwort

2

Die TcpSendingMessageHandler ist für Einwegnutzung - nur für Nachrichten an den TCP-Socket senden.

Also, Ihre Konfiguration sieht gut aus und scheint für mich, es sollte funktionieren.

TcpListener Austritt aus - kein Zuhörer und nicht den einmaligen Gebrauch

Ist nur DEBUG Nachricht vom TcpNetConnection, die anzeigt, dass Ihre Komponente one-way ist.

Daher ist es normal, dass Sie keine Antwort vom Server erhalten können. Weil du nur eine Nachricht dorthin schickst.

Um request/reply Szenarien verwenden zu können, verwenden Sie TcpOutboundGateway.

+0

Danke @ artem-bilan. In der Dokumentation der Frühjahrsintegration wird jedoch erwähnt: 'Die Gateways korrelieren Nachrichten automatisch. Ein Outbound-Gateway sollte jedoch nur für Anwendungen mit relativ geringem Volumen verwendet werden. Verwenden Sie daher bei großen Nachrichten ein kooperierendes Paar von Kanaladaptern. Sie müssen jedoch eine Zusammenarbeitslogik bereitstellen. – Wins

+1

Und? Das ist richtig. Um Nachrichten vom Server zu empfangen, müssen Sie '' hinzufügen. Und pass auf: * nur * erhalten. Sie sind also genau das Paar für die Zusammenarbeit. Aber ja, sie sind keine automatische Logik für die Korrelation, daher sollten Sie sie selbst unterstützen. –

+0

Also habe ich diesen Inbound-Channel-Adapter gesetzt, aber ich habe 'keinen Output-Channel oder ReplyChannel-Header verfügbar'. Wird der Header ebenfalls serialisiert und über das Netzwerk gesendet? – Wins