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