2015-03-03 32 views
5

我有Spring集成XML配置與以下豆在java配置中,<tcp-outbound-channel-adapter>的等價物是什麼?

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

我想在java中的配置相當於將

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

然而,在日誌中,我看到

TcpListener exiting - no listener and not single use 

我無法收到服務器的回覆。

任何幫助表示讚賞

回答

2

TcpSendingMessageHandler是單向的使用 - 只爲將消息發送到TCP套接字。

所以,你的配置看起來不錯,看來我應該工作。

的TcpListener退出 - 沒有聽衆,而不是單次使用

是從TcpNetConnection只是DEBUG消息,這表明你的組件是one-way

因此,您無法從服務器收到回覆是正常現象。因爲你只發送消息到那裏。

要有request/reply方案考慮使用TcpOutboundGateway

+0

謝謝@ artem-bilan。然而在春季集成文檔中提到:「網關會自動關聯消息。但是,出站網關只能用於相對少量的使用。 因此,對於大容量消息,請考慮使用一對協作的通道適配器。但是,您將需要提供協作邏輯。「# – Wins 2015-03-03 10:28:38

+1

並且?這是正確的。要接收來自服務器的消息,您必須添加''。並注意:*只*收到。所以,他們正是這對合作夥伴。但是,是的,他們沒有自動相關邏輯,所以你應該自己支持它。 – 2015-03-03 10:32:27

+0

所以我已經把這個入站通道適配器,但是我沒有'輸出通道或replyChannel頭可用'。頭部是否也被序列化並通過網絡發送? – Wins 2015-03-03 10:35:01

相關問題