HttpComponents 之客户端连接池

简介: 1.配置参数 org.apache.http.impl.conn.PoolingHttpClientConnectionManager 类。用于管理httpClient连接池。调用默认构造函数即可得到。 org.apache.http.impl.conn.PoolingHttpClientConnectionManager.setMaxTotal(int max) 设置最大的连接数

1.配置参数

org.apache.http.impl.conn.PoolingHttpClientConnectionManager

类。用于管理httpClient连接池。调用默认构造函数即可得到。

org.apache.http.impl.conn.PoolingHttpClientConnectionManager.setMaxTotal(int max)

设置最大的连接数,即tcp连接数。

 void org.apache.http.impl.conn.PoolingHttpClientConnectionManager.setDefaultMaxPerRoute(int max)

设置每个路由的默认最大连接数。默认为2。也就是说你连qq.com:80的tcp个数最多为2。

void org.apache.http.impl.conn.PoolingHttpClientConnectionManager.setMaxPerRoute(HttpRoute route, int max)

设置指定路由的最大连接数。

2.拿到httpClient

HttpClientBuilder org.apache.http.impl.client.HttpClients.custom()

拿到HttpClientBuilder 。

HttpClientBuilder org.apache.http.impl.client.HttpClientBuilder.setConnectionManager(HttpClientConnectionManager connManager)

将PoolingHttpClientConnectionManager对象传进去。注意返回类型,可链式调用。

HttpClientBuilder org.apache.http.impl.client.HttpClientBuilder.setDefaultRequestConfig(RequestConfig config)

将RequestConfig对象传进去。

CloseableHttpClient org.apache.http.impl.client.HttpClientBuilder.build()

至此拿到了httpClient对象。它是线程安全的。

3.示例代码

也可见yichuutil项目。

4.回收过期链接

服务端若资源紧张,可能关闭一些我们已经建立好的链接。而连接池自己不会关,所以需要一个定时任务来清理。PoolingHttpClientConnectionManager类已经提供了此方法。
void org.apache.http.impl.conn.PoolingHttpClientConnectionManager. closeExpiredConnections()


图4-1 官网相关介绍,清理过期链接

5.注意

调用CloseableHttpResponse org.apache.http.impl.client.CloseableHttpClient. execute(HttpUriRequest request)时,会从连接池中找出一条链接通路来通信,此方法仍是同步的。所以要想做到并发通信,数据库连接池必须配合多线程使用。
目录
相关文章
|
26天前
|
Java Apache
httpclient能不能改成长连接的连接池
【8月更文挑战第25天】httpclient能不能改成长连接的连接池
38 2
|
3月前
|
监控 Java 数据库连接
Java一分钟之-JDBC连接池:HikariCP, Apache DBCP, C3P0
【6月更文挑战第14天】本文介绍了Java中常用的三种JDBC连接池——HikariCP、Apache DBCP和C3P0。HikariCP以其高性能和低延迟领先,适合高并发环境;Apache DBCP稳定易配置;C3P0则提供高度可定制选项。文章讨论了各连接池的常见问题及避免策略,如配置不当、连接泄露等,并给出示例代码以供参考。选择合适的连接池并正确配置能有效提升应用性能。
63 7
|
3月前
|
druid
druid连接池_工具类
druid连接池_工具类
35 2
|
11月前
|
SQL Java 数据库连接
自定义HikariCP连接池
自定义HikariCP连接池
452 0
|
运维 监控 负载均衡
HttpClient连接池设置引发的一次雪崩
HttpClient连接池设置引发的一次雪崩
|
SQL Oracle 关系型数据库
DBCP连接池
DBCP连接池
118 0
|
关系型数据库 MySQL Java
dbcp连接池|学习笔记
快速学习dbcp连接池
102 0
dbcp连接池|学习笔记
|
JSON NoSQL Java
Apache Curator客户端的使用(五)
Apache Curator客户端的使用(五)
163 0
|
关系型数据库 MySQL Java
dbcp连接池|学习笔记
快速学习dbcp连接池
dbcp连接池|学习笔记
|
JSON 前端开发 JavaScript
Spring整合WebSocket(三)上
Spring整合WebSocket(三)上
1076 0
Spring整合WebSocket(三)上