gpt4 book ai didi

java - 如何处理 HttpAsyncClient 异常

转载 作者:行者123 更新时间:2023-12-02 13:23:05 31 4
gpt4 key购买 nike

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

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

  2. 如果我用每个新请求初始化 httpclient,会对性能产生什么影响?

  3. 我是否需要在finally block 中关闭所有失败请求的连接,不这样做有什么缺点?


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)
}

}

最佳答案

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

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

关于java - 如何处理 HttpAsyncClient 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487053/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com