首页 > 解决方案 > 弹簧集成大连接处理

问题描述

我们已经使用 spring 集成实现了 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 处理此类问题。

标签: spring-bootspring-integration

解决方案


TcpNetServerConnectionFactoryAbstractConnectionFactory定义java.util.concurrent.Executor属性 ( taskExecutor)的子类。


推荐阅读