Spring Cloud RestTemplate報錯:java.lang.IllegalStateException: No instances available for xxx

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章