Я использую 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 и больше не вернулся.
Заранее спасибо!