Тайм-аут в TCP-клиенте весной интеграции не работает - PullRequest
0 голосов
/ 27 мая 2019

У меня настроен TCP-клиент, который отправляет и получает сообщение с удаленного сервера. Если клиент не отвечает на мой запрос в течение 2 секунд, я хочу, чтобы время ожидания истекло. Я использовал как soTimeout, так и remoteTimeout, но, тем не менее, они не работают. Время ожидания моего запроса истекает почти минуту. Ниже приведена настройка моего клиентского компонента.

@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 голосов
/ 28 мая 2019

Удаленный тайм-аут и тайм-аут сокета применяются к открытым сокетам.

Обычно, если вы не можете открыть соединение, вы получаете исключение, но некоторые сети могут вызвать задержку.

Тайм-аут подключения в настоящее время не настраивается.

Подкласс 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...