問題描述:
在使用Nacos+SpringBoot+OpenFeign搭建項目時绳匀,Nacos作為注冊中心芋忿、配置中心,應(yīng)用成功注冊到Nacos疾棵,但是服務(wù)消費者通過OpenFeign調(diào)用服務(wù)時戈钢,報錯:Load balancer does not contain an instance for the service xxx-service
。解決方案如下:
1陋桂、排查微服務(wù)應(yīng)用的名字
- 排查application.name大小寫是否一致問題(nacos比較區(qū)分大小寫逆趣,最好統(tǒng)一都用小寫)
- “_”下劃線改為短線“-”,eg:cloud_payment 改為cloud-payment (不然可能會報錯
java.lang.IllegalStateException: Service id not legal hostname
)
#參考:
spring:
application:
name: cloud-payment #微服務(wù)應(yīng)用的名字
2嗜历、排查注解@FeignClient注解
排查注解@FeignClient注解value的值配置宣渗,是否和nacos中展示的服務(wù)名一致(大小寫也要一致)
@FeignClient(value = "cloud-payment",fallback = PaymentFallbackService.class)
3、排查SpringBoot梨州、SpringCloud痕囱、Spring Cloud Alibaba、以及Nacos版本
排查SpringBoot暴匠、SpringCloud鞍恢、Spring Cloud Alibaba、以及Nacos版本是否配套使用每窖,我們知道往往環(huán)境問題多是版本搞得怪帮掉。
可參看SpringBoot、SpringCloud窒典、Spring Cloud Alibaba版本對照表(詳細準確)處理蟆炊。
4、微服務(wù)在共同的命名空間和分組中
5瀑志、修改配置
如果開啟了熔斷器涩搓,可檢查版本:
springcloud2020以前的版本,配置如下:
feign:
hystrix:
enable: true
或者
feign.hystrix.enabled=true
springcloud2020以后的版本劈猪,配置如下:
feign:
circuitbreaker:
enabled: true
或者
feign.circuitbreaker.enabled=true
修改配置后重啟服務(wù)昧甘。
好了,到這里了战得,希望能解決你的問題充边。如果沒有解決,可以先單獨調(diào)用服務(wù)提供者確認自身沒問題常侦,能成功注入到注冊中心痛黎,再去懷疑調(diào)用者哈予弧,再去懷疑調(diào)用過程。