问题描述
工作中,在调用同事写的某个接口的时候,使用的调用方式是RestTemplate。最开始数据量小,调用正常,随着数据量增加,这个接口过分的慢,后台日志出现Read time out异常。
问题分析
- 最开始我以为是网关设置的ribbon超时过短导致,调大后,还是不行。
- 然后我配置了自定义的一个RestTemplate,由于集成了公司框架,里面有默认的restTemplate,所以为当前bean指定一个名字。如下
@Configuration
public class RestTemplateConfig{
@Bean("PermissionRestTemplate")
public RestTemplate getRestTemplate(){
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setConnectionTimeout(5000);
factory.setConnectionRequestTimeout(5000);
factory.setReadTimeout(120*1000);
return new RestTemplate(factory);
}
}
问题解决
- 在使用的时候指定使用配置的restTemplate。调用就能够正常获取数据了。
@Qualifier("permissionRestTemplate")
@Autowired
private RestTemplate restTemplate;