Spring boot RestTemplate - некоторый запрос api с RestTemplate зависает и никогда не возвращается с сервера - PullRequest
0 голосов
/ 09 мая 2020

Я использую Spring Boot RestTemplate для подключения стороннего rest api с подходом многопоточной фабрики HttpComponentsClientHttpRequestFactory

    TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
    SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom().loadTrustMaterial(null, 
    acceptingTrustStrategy)
            .build();
    SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext,
            SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(csf).build();
    httpCCHttpRequestFactory.setReadTimeout(30000);
    httpCCHttpRequestFactory.setConnectTimeout(30000);
    httpCCHttpRequestFactory.setHttpClient(httpClient);
    restTemplate.setRequestFactory(httpCCHttpRequestFactory);

мы также установили readTimeout и connectTimeOut, чтобы запрос api не go в бесконечном l oop, но некоторые запросы выполняются в бесконечном l oop и никогда не возвращаются с сервера.

так что я понимаю-

Мы отправляем большое количество запросов на сервер, поэтому мы использовали подход пула соединений с подходом HttpComponentsClientHttpRequestFactory, и у ConnectionManager есть некоторый размер пула по умолчанию, каждый запрос пытается получить соединение из пула и сделать запрос на сервер, и мы заметили, что мы не установили connectionRequestTimeout, который помогает для запроса не чтобы ждать вечно, поэтому мы также устанавливаем connectionRequestTimeout, но некоторые запросы никогда не возвращаются с сервера.

Также это периодическая проблема, когда некоторые из запросов, которые мы отправили на сервер, t hrough RestTemplate перешел на бесконечный l oop и больше не вернулся.

Заранее спасибо!

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