RestTemplate HttpClient connectionRequestTimeout
RestTemplate HttpClient connectionRequestTimeout
为了配置 RestTemplate,我使用了以下配置:
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
httpRequestFactory.setConnectTimeout(connectionTimeoutMs);
httpRequestFactory.setConnectionRequestTimeout(readTimeoutMs);
httpRequestFactory.setReadTimeout(readTimeoutMs);
RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
我了解连接和读取超时的目的。但是我不明白连接请求超时的目的。 Javadoc 也不清楚它是什么意思。你能解释一下吗?
正如 docs 所说:
Set the timeout in milliseconds used when requesting a connection from
the connection manager using the underlying HttpClient.
这意味着您将允许连接管理器从其池中为您提供可用连接的最长时间(因此它与您将到达的 REST
服务本身无关)。
要定义自定义连接管理器,您可以使用它:
CloseableHttpClient httpClientBuilder = HttpClientBuilder.create().setConnectionManager(...).build();
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClientBuilder);
为了配置 RestTemplate,我使用了以下配置:
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
httpRequestFactory.setConnectTimeout(connectionTimeoutMs);
httpRequestFactory.setConnectionRequestTimeout(readTimeoutMs);
httpRequestFactory.setReadTimeout(readTimeoutMs);
RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
我了解连接和读取超时的目的。但是我不明白连接请求超时的目的。 Javadoc 也不清楚它是什么意思。你能解释一下吗?
正如 docs 所说:
Set the timeout in milliseconds used when requesting a connection from the connection manager using the underlying HttpClient.
这意味着您将允许连接管理器从其池中为您提供可用连接的最长时间(因此它与您将到达的 REST
服务本身无关)。
要定义自定义连接管理器,您可以使用它:
CloseableHttpClient httpClientBuilder = HttpClientBuilder.create().setConnectionManager(...).build();
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClientBuilder);