Http连接池是每个程序要都要经历的过程,但确实最容易忽略的地方。今天我们就来升级改造。
其原因比较简单,相信大家都知道,主要是两点:
- 减少线程创建、销毁的开销
- 控制线程的数量,避免来一个任务创建一个线程,最终内存的暴增甚至耗尽
使用HTTP/1.0的客户端在首部中加上”Connection:Keep-Alive”,请求服务端将一条连接保持在打开状态。服务端如果愿意将这条连接保持在打开状态,就会在响应中包含同样的首部。如果响应中没有包含”Connection:Keep-Alive”首部,则客户端会认为服务端不支持keep-alive,会在发送完响应报文之后关闭掉当前连接。
- RestTemplate是spring支持的一个请求http rest服务的模板对象,性质上有点像jdbcTemplate
- RestTemplate底层还是使用的httpclient(org.apache.http.client.HttpClient)发送请求的
- HttpClient可以做连接池,而发送消息的工具类可以使用RestTemplate,所以如果你的项目需求http连接池,RestTemplate+httpclient连接池是一种不错的方式,可以节省开发工作,也可以更优雅的使用。
|