在Spring Integration中,我使用了几个通道适配器来从服务器套接字发送/接收消息。我总是使用以下适配器创建客户端连接:
@Bean
public TcpReceivingChannelAdapter tcpIn(AbstractClientConnectionFactory connectionFactory) throws Exception {
TcpReceivingChannelAdapter receiver = new TcpReceivingChannelAdapter();
receiver.setOutputChannel(fromTcp ());
receiver.setConnectionFactory(connectionFactory);
return receiver;
}
@Bean
@ServiceActivator(inputChannel = "toTcp")
public TcpSendingMessageHandler tcpOut(AbstractClientConnectionFactory connectionFactory) throws Exception {
TcpSendingMessageHandler sender = new TcpSendingMessageHandler();
sender.setConnectionFactory(connectionFactory);
sender.setClientMode(true);
return sender;
}
这里的问题是服务器在同一个套接字中回答远程端口(我打开的套接字端口)。例如,如果我将套接字连接到127.0.0.1:4444,则服务器正在回答我打开的端口(使用Socket tcp动态)6873而不是4444.它正在使用相同的套接字。
快速回答可能是使用TcpOutboundGateway
但我在这种情况下遇到了一些问题:
对于高容量消息,请考虑使用协作对 通道适配器。但是,您需要提供协作 逻辑。
在高容量场景中,我应该将哪个组件用于请求/响应套接字?
答案 0 :(得分:0)
请阅读以下字词Reference Manual:
为了实现高容量吞吐量(避免如上所述使用网关的缺陷),您可以考虑配置一对协作出站和入站通道适配器。
另请参阅TCP Multiplex Sample:
此示例演示了如何在客户端和服务器端配置协作通道适配器,以及一种将响应与相应请求相关联的技术。