为了配置RestTemplate,我使用以下配置:
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
httpRequestFactory.setConnectTimeout(connectionTimeoutMs);
httpRequestFactory.setConnectionRequestTimeout(readTimeoutMs);
httpRequestFactory.setReadTimeout(readTimeoutMs);
RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
我了解连接和读取超时的目的。但我不明白连接请求超时的目的。Javadoc也不清楚这意味着什么。你能解释一下吗?
正如文档所说:
设置从以下位置请求连接时使用的超时(以毫秒为单位( 使用基础 HttpClient 的连接管理器。
这意味着您允许连接管理器从其池中为您提供可用连接的最长时间(因此它与您将访问的REST
服务本身无关(。
要定义自定义连接管理器,可以使用以下内容:
CloseableHttpClient httpClientBuilder = HttpClientBuilder.create().setConnectionManager(...).build();
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClientBuilder);