我们已经实现了带有弹簧集成的tcp服务器。
配置与
相同@Bean
TcpNetServerConnectionFactory cf(){
TcpNetServerConnectionFactory connectionFactory=new TcpNetServerConnectionFactory(TCP_PORT);
connectionFactory.setSerializer(new CustomSerializerDeserializer());
connectionFactory.setDeserializer(new CustomSerializerDeserializer());
connectionFactory.setSoTimeout(TIMEOUT);
return connectionFactory;
}
@Bean
TcpInboundGateway tcpGate(){
TcpInboundGateway gateway=new TcpInboundGateway();
gateway.setConnectionFactory(cf());
gateway.setRequestChannel(requestChannel());
return gateway;
}
@Bean
public MessageChannel requestChannel(){
return new DirectChannel();
}
和服务激活器
@MessageEndpoint
public class Echo {
@ServiceActivator(inputChannel="requestChannel")
public byte[] echo(byte[] in,@SuppressWarnings("deprecation") @Header("ip_address") String ip){
return "OK".getBytes();
}
}
我们与分配的端口建立了150多个连接,每10秒就有150多个tcp数据包。
当前,我们正在处理延迟的数据包接收问题,我们需要实时数据才能正常运行。
最近我们得出结论,线程正在等待执行,这导致包的延迟接收。
我们如何通过spring集成和tcp inboudgateways处理此类问题。
答案 0 :(得分:2)
TcpNetServerConnectionFactory
是AbstractConnectionFactory
的子类,它定义了java.util.concurrent.Executor
属性(taskExecutor
)。
答案 1 :(得分:2)
使用TcpNioServerConnectionFactory
代替; ...Net...
对于少量持久连接更有效。