2015-03-03 10 views
5

Ho la configurazione XML integrazione primavera con i seguenti fagiolicosa è equivalente a <tcp-outbound-channel-adapter> in java config?

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

ho pensato che l'equivalente in Java config sarebbe

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

Tuttavia, nel log, vedo

TcpListener exiting - no listener and not single use 

e non posso ricevere la risposta dal server.

Ogni aiuto è apprezzato

risposta

2

Il TcpSendingMessageHandler è per l'utilizzo di sola andata - solo per l'invio di messaggi al socket TCP.

Quindi, la configurazione è buona e sembra che dovrebbe funzionare.

TcpListener uscire - non ascolta e non monouso

è solo DEBUG messaggio dal TcpNetConnection che indica che il componente è one-way.

Pertanto è normale che non è possibile ricevere una risposta dal server. Perché invii solo un messaggio lì.

Per gli scenari request/reply si consiglia di utilizzare TcpOutboundGateway.

+0

Grazie @ artem-bilan. Tuttavia nella documentazione di integrazione di primavera, viene menzionato: 'I gateway correlano automaticamente i messaggi. Tuttavia, un gateway in uscita dovrebbe essere utilizzato solo per un utilizzo relativamente basso del volume. Pertanto, per i messaggi a volume elevato, è consigliabile utilizzare una coppia di adattatori di canale collaboranti. Tuttavia, sarà necessario fornire una logica di collaborazione. – Wins

+1

E? È corretto. Per ricevere messaggi dal server è necessario aggiungere ''. E fai attenzione: * solo * ricevi. Quindi, sono esattamente quella coppia per la collaborazione. Ma sì, non c'è una logica automatica per la correlazione, quindi dovresti supportarlo tu stesso. –

+0

Quindi ho messo quell'adattatore del canale in ingresso, tuttavia ho ottenuto "nessun canale di output o header Replican disponibile". Anche l'intestazione viene serializzata e inviata attraverso la rete? – Wins