Springboot RestTemplate设置超时时间的简单方法
RestTemplate未设置超时时间,导致RabbitMQ队列大量堆积,消费者假死,不进行消费,类似线程堵塞。
排查:
从日志排查问题,在从进入消费者到结束期间,会调用业务服务,然而通过开始时间至结束时间,花费的时间竟然高达100多秒,查看业务服务未发现异常。出现这种问题的原因也有可能在消费期间网络波动导致HTTP连接出现问题,一直处于等待状态。由此判断可能是HTTP超时时间未设置导致的问题。
本文生产环境Springboot版本 2.1.5.RELEASE,采用的是Java config配置
Java Config配置
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate getRestTemplate() {
//配置HTTP超时时间
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
httpRequestFactory.setConnectionRequestTimeout(6000);
httpRequestFactory.setConnectTimeout(6000);
httpRequestFactory.setReadTimeout(6000);
return new RestTemplate(httpRequestFactory);
}
}
配置文件指定
custom.rest.connection.connection-request-timeout=3000 custom.rest.connection.connect-timeout=3000 custom.rest.connection.read-timeout=3000
@Configuration
public class AppConfig{
@Bean
@ConfigurationProperties(prefix = "custom.rest.connection")
public HttpComponentsClientHttpRequestFactory customHttpRequestFactory() {
return new HttpComponentsClientHttpRequestFactory();
}
@Bean
public RestTemplate customRestTemplate(){
return new RestTemplate(customHttpRequestFactory());
}
}
重新部署后消费者迅速开始消费,堆积的消息已经消费完。
RestTemplate 设置超时时间注意点
1、保证系统中只有一个RestTemplate的配置;不然可能与你的预期不一致。
2、永远不要太相信自己写的代码;多打印日志才能真正知道调用时间;
long s = System.currentTimeMillis();
try {
responseEntity = restTemplate.exchange();
} catch (Exception e) {
long costTime = System.currentTimeMillis()-s;
log.error("调用**服务异常,花费时间:{},错误:{}",costTime, e.getMessage(), e);
}
总结
到此这篇关于Springboot RestTemplate设置超时时间的文章就介绍到这了,更多相关Springboot RestTemplate设置超时时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot多数据源使用@Qualifier自动注入无效的解决
这篇文章主要介绍了springboot多数据源使用@Qualifier自动注入无效的解决,具有很好的参考价值,希望对大家有所帮助。也希望大家多多支持脚本之家2021-11-11
java通过Callable和Future来接收线程池的执行结果
这篇文章主要介绍了java通过Callable和Future来接收线程池的执行结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08
SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题
今天小编就为大家分享一篇关于SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-03-03


最新评论