如何在HttpClient5中使用setMaxConnPerRoute和setMaxConnTotal?(适配Spring Boot3迁移)
HttpClient 5.2 替换 maxConnPerRoute 和 maxConnTotal 配置
在 HttpClient 5.x 版本中,连接池的核心配置(单路由最大连接数、全局最大连接数)已从 HttpClientBuilder 迁移至连接管理器本身。另外需要注意:BasicHttpClientConnectionManager 是单连接管理器,不支持多连接池配置,若要设置连接数上限,需使用 PoolingHttpClientConnectionManager。
修改后的代码示例
// 构建带连接池配置的连接管理器 PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create() // 对应原 setMaxConnPerRoute,设置每个路由的最大连接数 .setDefaultMaxPerRoute(50) // 对应原 setMaxConnTotal,设置全局最大连接数 .setMaxTotal(200) // 保留原有的连接配置 .setConnectionConfig(connConfig) .build(); CloseableHttpClient client = HttpClientBuilder.create() .disableAutomaticRetries() .setDefaultRequestConfig(RequestConfig.custom() .setConnectionRequestTimeout(Timeout.ofMilliseconds(30000)) .build()) .setConnectionManager(cm) .build();
关键变化说明
- 连接管理器替换:将
BasicHttpClientConnectionManager替换为PoolingHttpClientConnectionManager,后者才支持连接池的多连接管理逻辑。 - 配置迁移:
- 原
setMaxConnPerRoute(int)对应现在的setDefaultMaxPerRoute(int)(需在连接管理器构建器中配置) - 原
setMaxConnTotal(int)对应现在的setMaxTotal(int)(需在连接管理器构建器中配置)
- 原
- 若偏好手动创建连接管理器,也可直接调用实例方法:
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setDefaultMaxPerRoute(50); cm.setMaxTotal(200); cm.setConnectionConfig(connConfig);
内容的提问来源于stack exchange,提问作者Pankaj Nargesh
相关产品推荐
相关产品推荐

