背景
- setConnectTimeout 设定连接超时。从你发起建立连接请求到连接建立前的时间。
- setReadTimeout 设定读取超时。连接建立后,发起request到收到response的时间。这个要慎重,如果你设置了超时,上游最后又把数据response给你了,可能出现你和上游的数据不一致。
restTemplateBuilder方式已经被废弃
restTemplateBuilder的方式被废弃,就推荐使用。
@Configuration
public class AppConfig
{
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder)
{
return restTemplateBuilder
.setConnectTimeout(...)
.setReadTimeout(...)
.build();
}
}
2.0之后的方法,可以通过SimpleClientHttpRequestFactory来设置超时。配置文件的方法多了个传参的过程。
@Configuration
public class AppConfig
{
@Bean
public RestTemplate restTemplate()
{
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(5000);
requestFactory.setReadTimeout(3000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
return restTemplate;
}
}