使用Ribbon进行负载均衡时,服务成功注册到eureka中,根据应用名称调用出现java.lang.IllegalStateException: No instances available for XXX。
服务方配置:
restTemplate调用:
问题分析:新版调用restTemplate方式有改变,使用RestOperations 进行调用,之前的版本使用RestTemplate 进行调用。
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
@Bean
@LoadBalanced
RestOperations restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
可尝试更换调用方式,有可能解决问题。
注:使用@LoadBalanced进行负载均衡时,新版eureka已经包含ribbon注解,可不用单独添加,否则可能会冲突。注册到服务中的应用名不能有下划线,Ribbon无法识别。


