休息模板。如何增加最大 tcp 连接数?
RestTemplate. How to increase max tcp connections?
我有 RestTemplate:
@Bean(name = "restTemplateBean")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.interceptors(new HttpRequestInterceptor())
.uriTemplateHandler(new DefaultUriBuilderFactory((host + ":" + port)))
.build();
}
当我多次调用 RestTemplate(例如 post 请求)时,它最多创建 5 ~ 10 个 TCP 连接。如何增加 RestTemplate 创建的最大连接数?
您可以利用 Apache 的 HttpClient 的连接池。使用 HttpClientBuilder 并增加 maxConnPerRoute 和 maxConnTotal 以达到您正在寻找的性能:
@Bean
public HttpClientBuilder httpClientBuilder() {
return HttpClients.custom()
.setMaxConnPerRoute(PER_ROUTE)
.setMaxConnTotal(TOTAL);
}
@Bean
public RestTemplate restTemplate(HttpClientBuilder httpClientBuilder) {
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClientBuilder.build());
return new RestTemplate(requestFactory);
}
maxConnPerRoute 限制了单个可以建立的连接数IP:port,maxTotal 限制了可以打开的总连接数。
我有 RestTemplate:
@Bean(name = "restTemplateBean")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.interceptors(new HttpRequestInterceptor())
.uriTemplateHandler(new DefaultUriBuilderFactory((host + ":" + port)))
.build();
}
当我多次调用 RestTemplate(例如 post 请求)时,它最多创建 5 ~ 10 个 TCP 连接。如何增加 RestTemplate 创建的最大连接数?
您可以利用 Apache 的 HttpClient 的连接池。使用 HttpClientBuilder 并增加 maxConnPerRoute 和 maxConnTotal 以达到您正在寻找的性能:
@Bean
public HttpClientBuilder httpClientBuilder() {
return HttpClients.custom()
.setMaxConnPerRoute(PER_ROUTE)
.setMaxConnTotal(TOTAL);
}
@Bean
public RestTemplate restTemplate(HttpClientBuilder httpClientBuilder) {
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClientBuilder.build());
return new RestTemplate(requestFactory);
}
maxConnPerRoute 限制了单个可以建立的连接数IP:port,maxTotal 限制了可以打开的总连接数。