Spring Integration TcpInboundGateway:TcpNetServerConnectionFactory:服务器套接字已关闭异常

时间:2016-06-13 11:58:44

标签: spring-integration

我在我的应用程序中使用Spring集成TcpInboundGateway,它通过TCP通道从远程客户端接收请求(数据包)。配置如下:

@Bean 
    ByteArrayCrLfSerializer ser()
    {
        return new ByteArrayCrLfSerializer();
    }

    @Bean
    TcpNetServerConnectionFactory cf(){
        TcpNetServerConnectionFactory connectionFactory=new TcpNetServerConnectionFactory(45456);

        connectionFactory.setSingleUse(true);
        connectionFactory.setSerializer(ser());
        connectionFactory.setDeserializer(ser());


        return connectionFactory;
    }

    @Bean
    TcpInboundGateway tcpGate(){

        TcpInboundGateway gateway=new TcpInboundGateway();
        gateway.setConnectionFactory(cf());
        gateway.setRequestChannel(requestChannel());
        gateway.setRequestTimeout(TIMEOUT);
        return gateway;
    }

    @Bean
    public MessageChannel requestChannel(){

        return new DirectChannel();
    }

据我所知,它支持多线程。但是当很多请求同时出现时,apllication停止使用以下错误消息。

2016-06-13 06:12:52.330  INFO 1431 --- [pool-2-thread-1] .s.i.i.t.c.TcpNetServerConnectionFactory : Server Socket closed

是否缺少任何配置以支持多线程同时处理大量请求。

2 个答案:

答案 0 :(得分:1)

但是,StackTrace不够......虽然当下游进程无法赶上所有传入的消息时,这可能是gateway.setRequestTimeout(TIMEOUT);的原因。考虑让它变得无限。

或者查看您的服务,并尝试找出它们在多线程中无法正常工作的原因。

答案 1 :(得分:0)

您可能希望通过TcpNioServerConnectionFactory而不是TcpNetServerConnectionFactory来使用非阻塞I / O。 一些文档:https://docs.spring.io/spring-integration/docs/5.2.1.RELEASE/reference/html/ip.html#note-nio