解决:com.netflix.client.ClientException: Load balancer does not have available server for client: XXX
问题背景:两个服务A和B,A使用Feign调用服务B的接口报错,显示B服务不可用,具体如下:
产生以上错误的原因是B服务没有被发现,解决上面的问题可以从3个方面入手排查:
排查一:
首先到注册中心列表查看服务是否存在,是否成功注册:
以上,服务已成功注册,若不存在需要在B服务的pom文件中添加以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
排查二:
在排除第一种情况外,还可能是因为服务启动顺序的原因影响:
服务A和B,A调用B(A->B)。
- 场景一:先启动了A,再启动了B。但是这时候,怎么都调用不到B。
- 场景二:先启动B,再启动A,这是可以正常调用。然后挂掉B,再重启。之后就怎么也调用不到B了。
如果要排除以上因素需要在B服务的application.properties的文件中添加以下配置:
ribbon.eureka.enable=true
排查三:
排除前两种原因,最后就是看下配置文件中定义的 服务名 是否正确了。
以上B服务的配置文件中应用名要和报错的服务名一致。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)