RestTemplate 超时值
·
使用Spring的RestTemplate时,默认的超时值是无限的。
默认情况下,RestTemplate使用SimpleClientHttpRequestFactory,然后使用HttpURLConnection。
默认情况下为HttpURLConnection的超时时间为0 - 即无限的,除非它已经被设置这些属性:
-Dsun.net.client.defaultConnectTimeout=TimeoutInMiliSec
-Dsun.net.client.defaultReadTimeout=TimeoutInMiliSec
SimpleClientHttpRequestFactory 源码。
public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory, AsyncClientHttpRequestFactory {
private static final int DEFAULT_CHUNK_SIZE = 4096;
private Proxy proxy;
private boolean bufferRequestBody = true;
private int chunkSize = 4096;
private int connectTimeout = -1;
private int readTimeout = -1;
private boolean outputStreaming = true;
private AsyncListenableTaskExecutor taskExecutor;
//...
public void setConnectTimeout(int connectTimeout) {
this.connectTimeout = connectTimeout;
}
//...
public void setReadTimeout(int readTimeout) {
this.readTimeout = readTimeout;
}
}
其 setConnectTimeout 和 setReadTimeout 方法,且默认值为 -1。
设置超时时间:
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(60000);
factory.setReadTimeout(300000);
this.restTemplate = new RestTemplate(factory);
更多推荐
所有评论(0)