Java 如何减少TcpOutboundGateway的超时?

Java 如何减少TcpOutboundGateway的超时?,java,spring,spring-boot,tcp,spring-integration,Java,Spring,Spring Boot,Tcp,Spring Integration,我注意到,每当我在配置为连接到不存在/不可用的主机/端口的TcpOutboundGateway上发送请求时,请求处理将挂起1分15秒,然后引发以下异常 java.net.ConnectException:操作超时(连接超时) 我希望减少1分15秒的等待时间,但还没有找到正确的方法。到目前为止,我已尝试在TcpOutboundGateway上设置remoteTimeout、requestTimeout和sendTimeout,但这些似乎都没有起到作用 是否可以将TcpOutboundGateway

我注意到,每当我在配置为连接到不存在/不可用的主机/端口的
TcpOutboundGateway
上发送请求时,请求处理将挂起1分15秒,然后引发以下异常

java.net.ConnectException:操作超时(连接超时)

我希望减少1分15秒的等待时间,但还没有找到正确的方法。到目前为止,我已尝试在
TcpOutboundGateway
上设置remoteTimeout、requestTimeout和sendTimeout,但这些似乎都没有起到作用

是否可以将
TcpOutboundGateway
配置为减少抛出该异常之前的等待时间?如果可能的话,怎样做



注意:关于“不存在的主机/端口”,这方面的一个例子是在本地运行我的应用程序,并将TcpOutboundGateway配置为发送到127.0.0.3:2000

连接问题不是网关的责任。它实际上是一个
连接工厂

请参阅AbstractClientConnectionFactory:

/**
 * Set the connection timeout in seconds. Defaults to 60.
 * @param connectTimeout the timeout.
 * @since 5.2
 */
public void setConnectTimeout(int connectTimeout) {
尽管如此,我认为这一版本可能不适用于您,因为我们将在下周发布
5.2

对于当前的
5.1.x
版本,您需要扩展
TcpNetClientConnectionFactory
及其
createSocket()
以提供适当的连接超时:

public class MyTcpNetClientConnectionFactory extends TcpNetClientConnectionFactory {

    protected Socket createSocket(String host, int port) throws IOException {
        Socket socket = getTcpSocketFactorySupport().getSocketFactory().createSocket();
        socket.connect(new InetSocketAddress(host, port), 1000);
        return socket;
    }
}

}连接问题不是网关的责任。它实际上是一个
连接工厂

请参阅AbstractClientConnectionFactory:

/**
 * Set the connection timeout in seconds. Defaults to 60.
 * @param connectTimeout the timeout.
 * @since 5.2
 */
public void setConnectTimeout(int connectTimeout) {
尽管如此,我认为这一版本可能不适用于您,因为我们将在下周发布
5.2

对于当前的
5.1.x
版本,您需要扩展
TcpNetClientConnectionFactory
及其
createSocket()
以提供适当的连接超时:

public class MyTcpNetClientConnectionFactory extends TcpNetClientConnectionFactory {

    protected Socket createSocket(String host, int port) throws IOException {
        Socket socket = getTcpSocketFactorySupport().getSocketFactory().createSocket();
        socket.connect(new InetSocketAddress(host, port), 1000);
        return socket;
    }
}

}

感谢您的回复。我相信您的createSocket覆盖解决方案现在可以解决这个问题。我将密切关注setConnectionTimeout方法在不久的将来的发布。感谢您的回复。我相信您的createSocket覆盖解决方案现在可以解决这个问题。我将密切关注setConnectionTimeout方法在不久的将来的发布。