java如何处理HttpAsyncClient异常
我想了解一些关于HttpAsyncClient的基本概念
我这里没有使用连接池,关闭失败的http请求的正确方法是什么(1)或(2)
如果我用每个新请求初始化httpclient,这里的性能影响是什么
对于所有失败的请求,我是否需要在finally块中关闭连接,不这样做的缺点是什么
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(3 * 1000)
.setConnectionRequestTimeout(3 * 1000)
.setSocketTimeout(30 * 1000)
.build();
CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
.setDefaultRequestConfig(config)
.build();
httpclient.start();
try {
if (targetHost != null && httpget != null)
response = httpclient.execute(HttpHost, HttpGet);
catch (Exception e) {
throw new CustomException("service.unavailable");
} finally {
if (httpget != null){
httpget.releaseConnection(); (1)
httpclient.close();(2)
}
}
# 1 楼答案
乍一看一切正常。我会摆脱httpget。releaseConnection(),这不是必需的。运行close语句将处理您需要的一切,并释放运行连接的线程。这样回答了你的第三个问题;关闭连接将释放连接的资源
至于初始化每个请求的新连接;我不会像关心服务器/网站的响应那样关心资源。打开任何web请求都需要时间,而不是真正代表您,而是服务器,等待响应和事件发生。我会编写一个优化的函数来处理所有的web请求,并为每个请求调用它,因为它将打开一扇大门,使之成为一个多线程应用程序,在其他应用程序繁忙时可以建立多个连接