【发布时间】:2020-12-23 13:22:03
【问题描述】:
在我的 spring-boot (2.4.0) 应用程序中,我设置了一个连接池和传出 HTTP 请求的超时时间(30 秒):
@Bean
public RequestConfig requestConfig() {
return RequestConfig.custom()
.setConnectionRequestTimeout(30000)
.setConnectTimeout(30000)
.setSocketTimeout(30000)
.build();
}
@Bean
public CloseableHttpClient httpClient(PoolingHttpClientConnectionManager poolingHttpClientConnectionManager,
RequestConfig requestConfig) {
return HttpClientBuilder
.create()
.setConnectionManager(poolingHttpClientConnectionManager)
.setDefaultRequestConfig(requestConfig)
.build();
}
@Bean
public RestTemplate restTemplate(HttpClient httpClient) {
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
return new RestTemplate(requestFactory);
}
我在我的网关类中自动装配 restTemplate bean 并使用这个 restTemplate.exchange(...) 来执行 HTTP 请求。超时本身工作正常,适用于所有传出请求。
但对于某些 URL,我需要将超时设置为 5 秒。
有没有办法覆盖某些 URL 的通用超时设置?
【问题讨论】:
标签: java spring spring-boot connection-pooling resttemplate