繁体   English   中英

Apache Http Client timout问题

[英]Apache Http Client timout issue

我有这部分代码:

         RequestConfig requestConfig = RequestConfig.custom()
                        .setConnectTimeout(30 * 1000)
                        .setSocketTimeout(30 * 1000)
                        .setConnectionRequestTimeout(30 * 1000)
                        .build();

         BotSynch.httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();

         httpClient.execute(post);

BotSynch.HttpClient是一个类字段

private static CloseableHttpClient httpClient;

最后一行中的帖子是HttpPost。

到目前为止,我的实现效果很好,但是如果我连接的服务器在30秒内没有响应发布请求,则什么也没有发生。

有时可能要花10分钟才能收到来自服务器的请求答复,而这实际上是我尝试通过上述超时设置来防止的。

在此设置下是否有我想念的东西或应该处理的东西?

如果预期的行为是HttpClient#execute调用的HttpClient#execute时间绝不会超过30秒,则无论执行结果如何,都应考虑在后台线程方法中使用HttpUriRequest#abort方法,该方法可能会在指定的时间间隔后中止请求。

    final HttpGet request = new HttpGet();
    ScheduledExecutorService executorService = ...
    executorService.schedule(request::abort, (long)30, TimeUnit.SECONDS);
    HttpResponse response = httpClient.execute(request);

我们(包括我自己)永远都不要忘记这不是socketTimeout所做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM