Конфигурация Apacha HttpClient - PullRequest
0 голосов
/ 18 января 2019

В настоящее время я использую RestTemplate при поддержке http-клиента Apache 4.5.6 на своем веб-сервере для выполнения http-запросов. Моя HttpClient конфигурация выглядит следующим образом:

PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();

        connectionManager.setMaxTotal(httpConfigurationProperties.getConnection().getMaxTotal());
        connectionManager.setDefaultMaxPerRoute(httpConfigurationProperties.getConnection()

        return HttpClients.custom()
                .setDefaultRequestConfig(RequestConfig
                    .custom()
                    .setConnectionRequestTimeout((int) httpConfigurationProperties.getTimeout().getConnectionRequestTimeout().toMillis())
                    .setConnectTimeout((int) httpConfigurationProperties.getTimeout().getConnectTimeout().toMillis())
                    .setSocketTimeout((int) httpConfigurationProperties.getTimeout().getReadTimeout().toMillis())
                    .build())
                .setRetryHandler(StandardHttpRequestRetryHandler.INSTANCE)
                .setConnectionManager(connectionManager)
                .build();

Когда я делаю HTTP GET, время от времени я вижу это:

Исключение ввода-вывода (java.net.SocketException) при обработке запрос к {s} ->: сброс соединения

Я прочитал в другом посте, что это вызвано тем, что сервер (которому я отправляю запрос) закрывает соединение без информирования клиента. И StandardHttpRequestRetryHandler смог повторить попытку. Но методы HTTP POST не повторяются, потому что они не являются идемпотентными операциями. Но есть ли конфигурация, которая может избежать этого сброса соединения в первую очередь?

А я пробовал использовать evictExpiredConnections и не помогает. Поможет ли настройка connectionManager.setValidateAfterInactivity(20000) проверить соединение перед использованием?

Перед использованием HTTP-клиента Apache я использовал SimpleClientHttpRequestFactory в RestTemplate и никогда не сталкивался с проблемами сброса соединения. Любая помощь приветствуется

...