我们通过代理将一些数据发送到外部API。 事实证明,这些地址之一具有查询限制。第5个查询不返回响应,因此连接仍处于打开状态并且什么也不做。我添加了SocketTimeout和ConnectionTimeout,但这没有帮助。
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(10 * 1000).setSocketTimeout(10 * 1000).build();
this.httpClient1 = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).setProxy(new HttpHost(ipsIterator.next(), PROXY_PORT)).build();
超时后,连接没有关闭,但仍在等待响应。 什么会导致这种行为? 你知道我该怎么解决吗?
我考虑过添加ExecutorService来在超时(ExecutorService that interrupts tasks after a timeout)之后中断任务。那将是一个好的解决方案吗?