HttpClient4

HttpClient4

HTTP Client4.0的ThreadSafeClientConnManager实现了HTTP连接的池化管理,其管理连接的基本单位是Route(路由),每个路由上都会维护一定数量的HTTP连接。这里的Route的概念可以理解为客户端机器到目标机器的一条线路,例如使用HttpClient的实现来分别请求 www.163.com 的资源和 www.sina.com 的资源就会产生两个route。缺省条件下对于每个Route,HttpClient仅维护2个连接,总数不超过20个连接,显然对于大多数应用来讲,都是不够用的,可以通过设置HTTP参数进行调整。

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. HttpParams params = new BasicHttpParams();  
  2. //将每个路由的最大连接数增加到200  
  3. ConnManagerParams.setMaxTotalConnections(params,200);  
  4. // 将每个路由的默认连接数设置为20  
  5. ConnPerRouteBean connPerRoute = new ConnPerRouteBean(20);  
  6. // 设置某一个IP的最大连接数  
  7. HttpHost localhost = new HttpHost("locahost"80);  
  8. connPerRoute.setMaxForRoute(new HttpRoute(localhost), 50);  
  9. ConnManagerParams.setMaxConnectionsPerRoute(params, connPerRoute);  
  10. SchemeRegistry schemeRegistry = new SchemeRegistry();  
  11. schemeRegistry.register(  
  12. new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));  
  13. schemeRegistry.register(  
  14. new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));  
  15. ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);  
  16. HttpClient httpClient = new DefaultHttpClient(cm, params);  


     

可以配置的HTTP参数有:
1)  http.conn-manager.timeout 当某一线程向连接池请求分配线程时,如果连接池已经没有可以分配的连接时,该线程将会被阻塞,直至http.conn-manager.timeout超时,抛出ConnectionPoolTimeoutException。
2)  http.conn-manager.max-per-route 每个路由的最大连接数;
3)  http.conn-manager.max-total 总的连接数;
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/p358278505/article/details/80689162
个人分类: Java
上一篇我曾经七次鄙视自己的灵魂【卡里·纪伯伦】
下一篇spring-boot tomcat logback日志
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭