Spring Integration中的TCP客户端超时无法正常工作

时间:2019-05-27 16:07:03

标签: spring-boot tcp spring-integration

我已经设置了一个TCP客户端,该客户端可以发送和接收来自远程服务器的消息。如果客户端在2秒钟内没有响应我的请求,我希望通话超时。我已经使用了soTimeout和remoteTimeout,但是它们仍然无法正常工作。我的请求超时花费了将近一分钟的时间。下面是我的客户端bean设置。

@Bean
    fun tcpClient(): IntegrationFlow {
        return IntegrationFlows.from(ClientGateway::class.java)
            .handle(Tcp.outboundGateway(
                Tcp.netClient("193.254.30.109", 6501).soTimeout(2000))
                .remoteTimeout(2000))
            .transform(Transformers.objectToString())
            .get()
    }

1 个答案:

答案 0 :(得分:0)

远程超时和套接字超时适用于打开的套接字。

通常,如果无法打开连接,则会出现异常,但某些网络可能会导致延迟。

当前无法配置连接超时。

子类TcpNetConnectionFactory并覆盖createSocket()方法...

protected Socket createSocket(String host, int port) throws IOException {
    Socket socket = this.tcpSocketFactorySupport.getSocketFactory().createSocket();
    SocketAddress endpoint = new InetSocketAddress(host, port);
    socket.connect(endpoint, 10_000);
    return socket;
}