【问题标题】:RestTemplate HttpClient connectionRequestTimeoutRestTemplate HttpClient connectionRequestTimeout
【发布时间】:2019-01-22 01:01:35
【问题描述】:

为了配置 RestTemplate,我使用以下配置:

HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
httpRequestFactory.setConnectTimeout(connectionTimeoutMs);
httpRequestFactory.setConnectionRequestTimeout(readTimeoutMs);
httpRequestFactory.setReadTimeout(readTimeoutMs);

RestTemplate restTemplate = new RestTemplate(httpRequestFactory);

我了解连接和读取超时的目的。但我不明白连接请求超时的目的。 Javadoc 也不清楚这是什么意思。你能解释一下吗?

【问题讨论】:

  • 这意味着:连接管理器池有这个时间给你一个有效的连接用于RestTemplate操作。超时值为零被解释为无限超时。

标签: spring timeout connection httpclient resttemplate


【解决方案1】:

正如docs 所说:

设置请求连接时使用的超时时间(以毫秒为单位) 使用底层 HttpClient 的连接管理器。

这意味着您将允许连接管理器从其池中为您提供可用连接的最长时间(因此它与您将达到的 RESTservice 本身无关)。

要定义自定义连接管理器,您可以使用:

CloseableHttpClient httpClientBuilder = HttpClientBuilder.create().setConnectionManager(...).build();
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClientBuilder);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    相关资源
    最近更新 更多