我已经设置了一个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()
}
答案 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;
}