java - 休息模板。如何增加最大 tcp 连接数?
问题描述
我有 RestTemplate:
@Bean(name = "restTemplateBean")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.interceptors(new HttpRequestInterceptor())
.uriTemplateHandler(new DefaultUriBuilderFactory((host + ":" + port)))
.build();
}
当我多次调用 RestTemplate(例如发布请求)时,它最多创建 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 限制可以打开的总连接数。
推荐阅读
- javascript - RxJS,具有动态页面内容的可观察对象
- spring-boot - 无法在 Spring Boot 控制台应用程序的命令行中传递 json 格式键/值
- javascript - 如何使用 Django 中的表单在视图中发布运行时数据
- xcode - 我的应用程序有时会导致 Mac 10.12 上的 WindowServer 高 CPU
- cluster-computing - 不属于集群的客户端的 vertx 服务发现
- jestjs - 运行 promise 后未调用 jest 函数
- r - 将闪亮的输入和反应添加到 Rhandsontable
- java - Java 8 - 从另一个方法返回方法的实时用例是什么?
- php - Guzzle 去除多余的请求方法
- android - 如何在 Exoplayer Android 库中为 HLS 流设置 CloudFront Cookie?