我正在使用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请求不应陷入无限循环,但某些请求会陷入无限循环而永不从服务器返回。
所以这是我的理解-
我们正在向服务器发送大量请求,因此我们使用了连接池方法 “ HttpComponentsClientHttpRequestFactory”方法,它的ConnectionManager具有默认的池大小,每个请求都试图从池中获取连接并向服务器发出请求,并且我们注意到我们没有设置connectionRequestTimeout,这有助于请求不等待无限次,所以我们还设置了connectionRequestTimeout,但是某些请求尚未从服务器返回。
这也是一个间歇性问题,其中我们通过RestTemplate向服务器发出的某些请求进入了无限循环,而从未返回。
提前致谢!