- 结构概览
2.详情
在分布式服务中,往往会存在这种一个父项目调用多个子节点的情况,而子节点又去调用别家
公司的接口。
这里就会存在三个设置超时时间的地方。
(1)、父core调用子节点feign超时设置:(这里当父core调用一个节点超过80s就会报超时)
feign.client.config.default.connect-timeout=80000
feign.client.config.default.read-timeout=80000
ribbon.ReadTimeout=80000
ribbon.ConnectTimeout=80000
(2)、子节点通过resttemplate访问服务接口超时设置:(这里采用的是在启动类中@Bean)
//注入restTemplate
@Bean
public RestTemplate restTemplate(){
SimpleClientHttpRequestFactory requestFactory = new
SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(600000);
requestFactory.setReadTimeout(600000);
RestTemplate restTemplate=new RestTemplate(requestFactory);
return restTemplate;
}
(3)、服务接口设置的超时时间:
需要提前沟通,比如别人服务设置的超时时间是2s,我们resttemplate设置的1s就报超时肯定是会出现问题的。
总的来说,就是我的父项目要等待所有子节点的最大等待超时时间结束后超时。
网友评论