有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何处理HttpAsyncClient异常

我想了解一些关于HttpAsyncClient的基本概念

  1. 我这里没有使用连接池,关闭失败的http请求的正确方法是什么(1)或(2)

  2. 如果我用每个新请求初始化httpclient,这里的性能影响是什么

  3. 对于所有失败的请求,我是否需要在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) 个答案

  1. # 1 楼答案

    乍一看一切正常。我会摆脱httpget。releaseConnection(),这不是必需的。运行close语句将处理您需要的一切,并释放运行连接的线程。这样回答了你的第三个问题;关闭连接将释放连接的资源

    至于初始化每个请求的新连接;我不会像关心服务器/网站的响应那样关心资源。打开任何web请求都需要时间,而不是真正代表您,而是服务器,等待响应和事件发生。我会编写一个优化的函数来处理所有的web请求,并为每个请求调用它,因为它将打开一扇大门,使之成为一个多线程应用程序,在其他应用程序繁忙时可以建立多个连接