ranong项目总结-HttpClient-Timeout设置(一)
来源:互联网 发布:js在框架在打开 编辑:程序博客网 时间:2024/06/05 15:42
httpclient在做数据获取、发送请求必须设置超时机制,如果没有设置超时时间,如果后端服务发生了阻塞、延迟那么这个连接就会回收不及时,httpclient默认的超时时间为24小时。
这里主要介绍了httpclient是4.5.2
的版本设置方式,低于这个版本的配置方式就大不一样了。
httpclient提供了3中设置超时方式,分别是
- 从连接池获取连接超时(setConnectionRequestTimeout)。
- 从client到server发送请求超时(setConnectTimeout)。
- 从server获取数据超时(setSocketTimeout)
下面代码介绍了这三种超时的配置以及超时报错内容:
public class HttpClientPool { public static CloseableHttpClient getHttpClient() { PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); /* * 设置最大httpclient pool最大连接数 */ cm.setMaxTotal(2); CloseableHttpClient httpClient = HttpClients .custom() .setDefaultRequestConfig(getDefaultRequestConfig()) .setConnectionManager(cm) .build(); return httpClient; } private static RequestConfig getDefaultRequestConfig(){ RequestConfig requestConfig = RequestConfig .custom() /* * 从连接池中获取连接的超时时间,假设:连接池中已经使用的连接数等于setMaxTotal,新来的线程在等待1*1000 * 后超时,错误内容:org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool */ .setConnectionRequestTimeout(1*1000) /* * 这定义了通过网络与服务器建立连接的超时时间。 * Httpclient包中通过一个异步线程去创建与服务器的socket连接,这就是该socket连接的超时时间, * 此处设置为2秒。假设:访问一个IP,192.168.10.100,这个IP不存在或者响应太慢,那么将会返回 * java.net.SocketTimeoutException: connect timed out */ .setConnectTimeout(5*1000) /* * 指的是连接上一个url,获取response的返回等待时间,假设:url程序中存在阻塞、或者response * 返回的文件内容太大,在指定的时间内没有读完,则出现 * java.net.SocketTimeoutException: Read timed out */ .setSocketTimeout(30*1000) .build(); return requestConfig; }}
==手机QQ扫描下方二维码,快速加入Java架构师交流群==
0 0
- ranong项目总结-HttpClient-Timeout设置(一)
- ranong项目总结-HttpClient-RetryHandler重试(一)
- ranong项目总结-HttpClient-HttpDelete支持HttpEntity
- ranong项目总结-Spring Boot Actuator(一)
- ranong项目总结-Jackson使用
- ranong项目总结-Spring Boot Actuator(二)
- android Httpclient 设置timeout
- android Httpclient 设置timeout
- httpclient中设置timeout失效问题
- 关于HttpClient的总结(一)
- HTTP连接设置timeout问题总结
- HttpClient超时时间 timeout
- HttpClient 4.5.2版本设置连接超时时间-CloseableHttpClient设置Timeout
- HttpClient 4.5.2版本设置连接超时时间-CloseableHttpClient设置Timeout
- HttpClient 4.5.2版本设置连接超时时间-CloseableHttpClient设置Timeout
- 项目总结(一)
- 项目server中设置session timeout遇到的问题
- HttpClient学习(一)
- Math数学方法--常用
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- Appium-Java测试环境搭建(Windows)
- Internal error. Please file a bug at bugreport.apple.com and attach
- 实用的分页插件
- ranong项目总结-HttpClient-Timeout设置(一)
- 马踏棋盘算法(骑士周游问题)
- 使用Android Studio搭建开发环境过程
- vue.js入门
- Android TextView的drawLeft无法与文字一起居中解决方案
- 进阶篇 react + webpack 配合
- 迭代器模式
- BZOJ 1024 dfs
- 字符串截取