java.lang.IllegalStateException: No instances available for XXXX
一、问题复现
最近搭建springCloud项目,搭建Eureka,多个服务后,启动各服务,查看eureka发现服务已被发现注册
然后开始调用发现,调用服务是报错 :
java.lang.IllegalStateException: No instances available for server1
二、项目部分代码
#配置restTemplate
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
#调用restTemplate
@Autowired
private RestTemplate restTemplate;
@ResponseBody
@RequestMapping("/web")
public String web(){
//server1为注册服务名称
String url="http://server1/index/index";
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
return "aaaa";
}
三、解决方法
将调用restTemplate,的代码改为下面的最新调用方式,即可解决问题
#配置restTemplate
@Bean
@LoadBalanced
RestOperations restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
#调用restTemplate
@Autowired
RestOperations restTemplate;
@ResponseBody
@RequestMapping("/web")
public String web(){
//server1为注册服务名称
String url="http://server1/index/index";
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
return "aaaa";
}
四、问题分析
springcloud版本造成的问题,最新版 Hoxton.SR4 ,调用restTemplate方式有改变,使用RestOperations 进行调用,之前的版本使用RestTemplate 进行调用。遇到问题的小伙伴把上面两种方式都试一下,有可能解决您的问题哟
另外,看了下官网springboot与springcloud有版本对应,否则可能会出现一些bug