解决springcloud“I/O error on GET request for xxx;nested exception xxx问题”
问题原因是嵌套的xxxservice请求未知
解决方法:
在springcloud启动类中的RestTemplate类的Bean,未用@LoadBalanced注解修饰
错误代码:
@Bean
public RestTemplate initRestTemplate(){
return new RestTemplate();
}
修改后代码:
@Bean
@LoadBalanced
public RestTemplate initRestTemplate(){
return new RestTemplate();
}
解释:
@LoadBalanced注解为RestTemplate Bean添加了一个LoadBalancerInterceptor拦截器。可以将请求的地址中的服务逻辑名转为具体的服务地址。也就是将localhost:8080转成了Eureka的application的名称。所以没有加该注解则会报xxxservice未找到。