Как уменьшить время ожидания TcpOutboundGateway? - PullRequest
0 голосов
/ 25 сентября 2019

Я заметил, что всякий раз, когда я отправляю запрос на TcpOutboundGateway, настроенный для подключения к хосту / порту, который не существует / недоступен, обработка запроса будет зависать в течение 1 минуты и 15 секунд, прежде чем выдать следующееисключение…

java.net.ConnectException: Operation timed out (Connection timed out)

Я надеюсь сократить время ожидания, равное 1 минуте и 15 секундам, но не смог найти правильный способ сделать это.До этого момента я пытался установить remoteTimeout, requestTimeout и sendTimeout на TcpOutboundGateway, и ни один из них, похоже, не сработал.

Можно ли настроить TcpOutboundGateway таким образом, чтобы сократить время ожидания до выдачи этого исключения?Если возможно, то как?


Примечание: В отношении «хоста / порта, который не существует», примером этого может служить запуск моего приложения локальнос TcpOutboundGateway, настроенным для отправки на 127.0.0.3:2000

1 Ответ

2 голосов
/ 25 сентября 2019

Проблема с подключением не является ответственностью шлюза.На самом деле речь идет о ConnectionFactory.

См. AbstractClientConnectionFactory:

/**
 * Set the connection timeout in seconds. Defaults to 60.
 * @param connectTimeout the timeout.
 * @since 5.2
 */
public void setConnectTimeout(int connectTimeout) {

Althoug, я вижу, что это может быть недоступно для вас, так как мы собираемся выпустить 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;
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...