关注「Java视界」公众号,获取更多技术干货

解决: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服务的配置文件中应用名要和报错的服务名一致。 

posted @   沙滩de流沙  阅读(4281)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

关注「Java视界」公众号,获取更多技术干货
点击右上角即可分享
微信分享提示