Ela*_*da2 6 java client timeout http request
我有这个代码:
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(40 * 1000)
.setConnectionRequestTimeout(40 * 1000)
.setSocketTimeout(40 * 1000)
.build();
client = HttpClientBuilder
.create()
.setDefaultRequestConfig(requestConfig)
.build();
}
Run Code Online (Sandbox Code Playgroud)
和
try {
Stopwatch stopWatch = Stopwatch.createStarted();
response = client.execute(new HttpGet(routingRequestUrl));
stopWatch.stop();
} catch (Exception e) {
answer.errorMsg = e.getMessage();
answer.latency = null;
}
Run Code Online (Sandbox Code Playgroud)
当我的客户端配置不包含时.setSocketTimeout(40 *
1000)- stopWatch显示请求可能需要超过1分钟.
它发生在我尝试setConnectTimeout和setConnectionRequestTimeout单独或全部在一起时.
为什么只有.setSocketTimeout(40 * 1000)40秒有效检查超时?而另一个不是吗?
这些是印刷品:
Read timed out
Timeout waiting for connection from pool
第一个是由setConnectionRequestTimeout第二个引发的setSocketTimeout吗?
Pau*_*tos 18
getConnectionRequestTimeout()
Run Code Online (Sandbox Code Playgroud)
返回从连接管理器请求连接时使用的超时(以毫秒为单位).
getConnectTimeout()
Run Code Online (Sandbox Code Playgroud)
确定建立连接之前的超时(以毫秒为单位).
getSocketTimeout()
Run Code Online (Sandbox Code Playgroud)
定义套接字超时(SO_TIMEOUT),以毫秒为单位,即等待数据的超时,或者换句话说,两个连续数据包之间的最大周期不活动.
__
所以,第一个,connectionRequestTimeout发生在你有一个连接池并且它们都忙,不允许连接管理器给你一个连接来发出请求时.
connectTimeout在建立连接时发生.例如,在进行tcp握手时.
socketTimeout就像描述所说的那样,是等待数据时的超时.通常在服务器运行缓慢时发生.
| 归档时间: |
|
| 查看次数: |
7443 次 |
| 最近记录: |