文章目录
- 问题描述:
- 1、排查微服务应用的名字
- 2、排查注解@FeignClient注解
- 3、排查SpringBoot、SpringCloud、Spring Cloud Alibaba、以及Nacos版本
- 4、微服务在共同的命名空间和分组中
- 5、修改配置
问题描述:
在使用Nacos+SpringBoot+OpenFeign搭建项目时,Nacos作为注册中心、配置中心,应用成功注册到Nacos,但是服务消费者通过OpenFeign调用服务时,报错:Load balancer does not contain an instance for the service xxx-service
。解决方案如下:
1、排查微服务应用的名字
- 排查application.name大小写是否一致问题(nacos比较区分大小写,最好统一都用小写)
- “_”下划线改为短线“-”,eg:cloud_payment 改为cloud-payment (不然可能会报错
java.lang.IllegalStateException: Service id not legal hostname
)
#参考:
spring:
application:
name: cloud-payment #微服务应用的名字
2、排查注解@FeignClient注解
排查注解@FeignClient注解value的值配置,是否和nacos中展示的服务名一致(大小写也要一致)
@FeignClient(value = "cloud-payment",fallback = PaymentFallbackService.class)
3、排查SpringBoot、SpringCloud、Spring Cloud Alibaba、以及Nacos版本
排查SpringBoot、SpringCloud、Spring Cloud Alibaba、以及Nacos版本是否配套使用,我们知道往往环境问题多是版本搞得怪。
可参看SpringBoot、SpringCloud、Spring Cloud Alibaba版本对照表(详细准确)处理。
4、微服务在共同的命名空间和分组中
5、修改配置
如果开启了熔断器,可检查版本:
springcloud2020以前的版本,配置如下:
feign:
hystrix:
enable: true
或者
feign.hystrix.enabled=true
springcloud2020以后的版本,配置如下:
feign:
circuitbreaker:
enabled: true
或者
feign.circuitbreaker.enabled=true
修改配置后重启服务。
好了,到这里了,希望能解决你的问题。如果没有解决,可以先单独调用服务提供者确认自身没问题,能成功注入到注册中心,再去怀疑调用者哈,再去怀疑调用过程。