为什么 `setConnectionRequestTimeout` 没有停止我的 1 分钟获取请求?
why `setConnectionRequestTimeout` doesn't stop my 1 min get request?
我有这个代码:
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(40 * 1000)
.setConnectionRequestTimeout(40 * 1000)
.setSocketTimeout(40 * 1000)
.build();
client = HttpClientBuilder
.create()
.setDefaultRequestConfig(requestConfig)
.build();
}
和
try {
Stopwatch stopWatch = Stopwatch.createStarted();
response = client.execute(new HttpGet(routingRequestUrl));
stopWatch.stop();
} catch (Exception e) {
answer.errorMsg = e.getMessage();
answer.latency = null;
}
当我的客户端配置不包含 .setSocketTimeout(40 *
1000)
- 秒表显示请求可能需要超过 1 分钟。
当我单独或一起尝试 setConnectTimeout
和 setConnectionRequestTimeout
时会发生这种情况。
为什么只有 .setSocketTimeout(40 * 1000)
有效检查超时 40 秒?而另一个不是?
这些是印刷品:
Read timed out
Timeout waiting for connection from pool
第一个是由setConnectionRequestTimeout
触发的,第二个是由setSocketTimeout
触发的吗?
getConnectionRequestTimeout()
Returns 从连接管理器请求连接时使用的超时时间(以毫秒为单位)。
getConnectTimeout()
确定建立连接前的超时时间(以毫秒为单位)。
getSocketTimeout()
定义以毫秒为单位的套接字超时(SO_TIMEOUT),这是等待数据的超时,或者换句话说,两个连续数据包之间的最大不活动时间。
__
所以,第一个,connectionRequestTimeout 发生在你有一个连接池并且它们都忙,不允许连接管理器给你一个连接来发出请求.
connectTimeout 发生在建立连接时。例如在进行 tcp 握手时。
socketTimeout 如描述所说,是等待数据时的超时时间。通常在您的服务器速度慢时发生。
我有这个代码:
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(40 * 1000)
.setConnectionRequestTimeout(40 * 1000)
.setSocketTimeout(40 * 1000)
.build();
client = HttpClientBuilder
.create()
.setDefaultRequestConfig(requestConfig)
.build();
}
和
try {
Stopwatch stopWatch = Stopwatch.createStarted();
response = client.execute(new HttpGet(routingRequestUrl));
stopWatch.stop();
} catch (Exception e) {
answer.errorMsg = e.getMessage();
answer.latency = null;
}
当我的客户端配置不包含 .setSocketTimeout(40 *
1000)
- 秒表显示请求可能需要超过 1 分钟。
当我单独或一起尝试 setConnectTimeout
和 setConnectionRequestTimeout
时会发生这种情况。
为什么只有 .setSocketTimeout(40 * 1000)
有效检查超时 40 秒?而另一个不是?
这些是印刷品:
Read timed out
Timeout waiting for connection from pool
第一个是由setConnectionRequestTimeout
触发的,第二个是由setSocketTimeout
触发的吗?
getConnectionRequestTimeout()
Returns 从连接管理器请求连接时使用的超时时间(以毫秒为单位)。
getConnectTimeout()
确定建立连接前的超时时间(以毫秒为单位)。
getSocketTimeout()
定义以毫秒为单位的套接字超时(SO_TIMEOUT),这是等待数据的超时,或者换句话说,两个连续数据包之间的最大不活动时间。
__
所以,第一个,connectionRequestTimeout 发生在你有一个连接池并且它们都忙,不允许连接管理器给你一个连接来发出请求.
connectTimeout 发生在建立连接时。例如在进行 tcp 握手时。
socketTimeout 如描述所说,是等待数据时的超时时间。通常在您的服务器速度慢时发生。