Spring Boot RestTemplate一次只能维护两个连接

m528fe3b  于 2023-03-18  发布在  Spring
关注(0)|答案(1)|浏览(159)

我的RestTemplate一次只能维护两个连接。第三个请求将被阻止,直到返回以前的请求。
我认为RestTemplate bean配置有问题。以下是RestTemplate的配置:

TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
SSLContext sslContext = new SSLContextBuilder()
        .loadTrustMaterial(null, acceptingTrustStrategy)
        .build();
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
CloseableHttpClient httpClient = HttpClients.custom()
        .setSSLSocketFactory(socketFactory)
        .build();
HttpComponentsClientHttpRequestFactory factory =
        new HttpComponentsClientHttpRequestFactory(httpClient);
return new RestTemplate(factory);

我不知道为什么。请帮帮我。

iqjalb3h

iqjalb3h1#

检查this Baeldung guide中显示的内容:
管理器可以打开的并发连接池的默认大小为每个路由或目标主机两个
但是您可以修改该属性:

PoolingHttpClientConnectionManager connManager 
  = new PoolingHttpClientConnectionManager();
connManager.setMaxTotal(5); 
connManager.setDefaultMaxPerRoute(4);

其中:

  • setMaxTotal(int max)-设置打开连接总数的最大值
  • setDefaultMaxPerRoute(int max)-设置每个路由的最大并发连接数,默认值为2。

因此,您可以将connManager配置注入httpClient

CloseableHttpClient client = HttpClients.custom()
    .setConnectionManager(connManager)
    .setSSLSocketFactory(socketFactory)
    .build();

相关问题