OpenFeign的@FeignClient注解不指定URL报错:Load balancer does not have available server for client

Java错误:com.netflix.client.ClientException: Load balancer does not have available server for client 检查客户端和服务端的配置,确保它们能够正确地与服务注册中心通信,并且服务名称(如module-sso。:查看服务注册中心、服务提供者以及客户端的日志,看是否有更详细的错误信息可以帮助定位问题。:确保服务实例正在运行并且已经注册到服务注册中心,且被调用的模块也在注册中心中存在。:可能所有对应的服务实例都没有运行,或者由于某种原因(如崩溃、维护等)都不可用。:可能是因为网络问题导致客户端无法连接到服务注册中心或者服务实例。:确保网络没有问题,客户端可以访问服务注册中心和服务实例。)已经在服务注册中心 阅读详情

思路:Bug探明->源码解读->解决

问题描述与背景

先贴一下完整报错栈:

java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: x.x.x.x

    at org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:91)
    at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:119)
    at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:89)
    at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100)
    at com.sun.proxy.$Proxy199.createTaskGroup(Unknown Source)
    at com.finchina.automatic.upgrade.feign.FeignTest.test(FeignTest.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

背景介绍:接到一个需求调用外部Http接口,之前有接触过Feign故想着在这个新项目实战一下,没想到遇到之前没遭遇过的BUG。

        

如上图,项目POM引入的是OpenFeign,之前用的是Feign。两者的差异其一就是OpenFeign集成了负载均衡的实现,这也是为什么笔者遭遇接下来的BUG。

下面贴图一开始快速搭建,单元测试看Feign是否能调通下游接口的Service。

一开始为了快速调通,所以url直接写死的线下环境,发起Http请求,可以正常收到Response。后面为了实现Url可通过Nacos配置,删除了注解中的Url,在Config类中指定Host的Target。

运行直接报错 java.lang.RuntimeException!

深入排查与原理探明

@FeignClient注解未指定Url时,Url为"", 这里会直接Return;

分为以下几种情况:

1、Url不为空,且Url不包含 #{}时,且Url包含 :// ,则输出为原本Url

2、Url不为空,且Url不包含 #{}时,但Url包含 :// ,则输出为http:// + 原本Url(注意这里如果构成的不是URL,则会抛出异常)

3、Url为空或Url包含 #{}时,直接返回

显然当前的情况为3,接下来继续看为什么返回为空导致Feign负载均衡从而触发去注册中心查找注册的当前服务(服务端并未注册在注册中心,故找不到对应服务,因而报错)。

原来是FeignClientFactoryBean构造这里,当url为空时: 会构造Url为http:// + name, 然后返回了采用loadBalance负债均衡的Client!

顺利成章的,后面在执行的时候,因为Client已经是LoadBalanceFeignClient了,故这里执行的execute接口方法的实现也就是LoadBalanceFeignClient的实现了,如下图:

解决方案

解决方法也很简单,省流方法:随便在@FeignClient注解指定Url,只要不是空值就可以。

笔者这里就写个EMPTY占位,暂时不想考虑太复杂的改法,等有时间可以深挖一下,应该是可以在构建Client时候手动指定为Default in Client的。

发起调用,看一下是否解决问题:

调上游接口正常返回Response,问题解决!

解决java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availa 解决java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: xxx-xxx-xxx 小弟第一次发博客,不喜勿喷,工作经验(1个月) 各位大佬你们,最近在接触微服务项目,在运行的过程中遇到许多问题,第一次写博客,就发... 阅读详情

相关推荐

Spring Boot微服务电商项目实战:从零构建企业级Vibe Coding平台

微服务架构通过将单体应用拆分为一组小型、独立的服务,每个服务围绕特定业务能力构建,并通过轻量级通信机制协作,从而提升了系统的可扩展性、灵活性和可维护性。其核心原理在于服务自治、独立部署和去中心化治理,技术价值体现在支持团队并行开发、技术栈异构以及故障隔离。在电商等高并发场景中,微服务能有效应对商品浏览、下单支付等模块的独立伸缩需求。本文以Spring Boot和Spring Cloud为基础,结合Nacos、Redis、RabbitMQ等中间件,通过一个名为“Vibe Coding”的电商平台项目,详细拆解

chubaisheng8627的博客 393

Load balancer does not have available server for client已解决

目录 普遍的解决办法 异常解析 SpringCloud服务消费搭建 服务端 消费端 注册中心 开启多个 可能遇到报错 普遍的解决办法 Load balancer does not have available server for client 首先,这个错误网上搜了很多文章,提供办法最多的是在配置文件里加入一下代码 ribbon: eureka: enabl...

DT_Zhangshuo的博客 15万+

【信息科学与工程学】计算机科学与自动化——第一百三十五篇 开发框架篇 系列二 Spring框架系列 02 Spring Cloud01

定义 HealthScore=∑wi​⋅indicatori​,其中 indicatori​ 为各组件健康度(0~1),wi​ 为权重。当 HealthScore<threshold 时返回 DOWN。②。

weixin_49199313的博客 480

Load balancer does not have available server for client问题

Load balancer does not have available server for client问题

LiangDongPath的博客 1万+

从Canny到深度学习:边缘检测指标进化史(含ODS/OIS/AP的数学推导)

本文系统梳理了边缘检测评估指标的演进历程,从经典的Canny算子到深度学习时代,重点解析了ODS、OIS和AP三大核心指标的设计哲学与数学推导。文章深入探讨了基于PR曲线的评估体系,揭示了不同指标(如ODS与OIS)在阈值优化上的差异,并分析了AP指标在边缘检测任务中的优势与局限,为算法研究和模型评估提供了实用指南。

b9c0d的博客 199

【NLP】语言模型的发展历程 (1)

N-gram模型是一种基于统计语言模型的文本分析算法,它用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。这里的n代表序列中元素的数量,因此称为N-gram。Unigram:N=1,每个单词的出现概率独立计算,不考虑上下文。Bigram:N=2,基于前一个单词预测当前单词的联合概率模型。Trigram:N=3,考虑前两个单词来预测当前单词的联合概率模型,更复杂但可能更准确。

酒酿小圆子呀~ 1667

java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availabl

java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availabl

寂夜了无痕的博客 4448

2024高校网络安全管理运维赛题目--复现+题目+wp

官方writeup集思广益比较好的备份。

书山有路勤为径,学海无涯苦作舟 1319

微服务开发实战复盘:Spring Cloud Alibaba技术栈与团队协作方法论

微服务架构作为现代分布式系统设计的核心范式,通过将单体应用拆分为一组小型、自治的服务,实现了系统的松耦合、独立部署和弹性扩展。其核心原理围绕服务注册发现、配置管理、API网关和分布式事务等关键技术展开。这种架构模式的技术价值在于提升了开发效率、增强了系统容错能力,并支持团队按业务领域进行高效协作。在电商、金融、物联网等复杂业务场景中,微服务架构能够更好地应对快速变化的需求和高并发挑战。本文以一次典型的线上编程竞赛为背景,深入探讨了基于Spring Cloud Alibaba的微服务全链路实战,涵盖了从环境搭

weixin_34211761的博客 354

BOSS直聘数据采集实战:八爪鱼工具高效爬取职位信息的完整指南

本文提供了一份使用八爪鱼采集器高效爬取BOSS直聘职位信息的完整实战指南。针对非技术用户,详细讲解了从软件安装、网址规律分析到流程配置、数据导出的每一步操作,并分享了提升采集稳定性的高级设置与避坑技巧,帮助用户轻松实现数据采集自动化。

weixin_29061509的博客 1473

COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南

多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真

weixin_30000735的博客 1308

手把手部署SpringCloud Alibaba微服务电商项目:从环境搭建到服务启动

微服务架构通过将单体应用拆分为多个独立部署、松耦合的服务,提升了系统的可扩展性和可维护性。其核心原理围绕服务注册发现、配置管理、API网关和分布式事务等关键技术展开。这种架构模式在电商、金融等高并发、复杂业务场景中具有重要价值,能够支持快速迭代和弹性伸缩。本文以SpringCloud Alibaba技术栈为基础,结合Nacos、Seata等核心组件,详细解析一个完整微服务电商项目(如mall4cloud)的本地环境部署全流程。内容涵盖Docker容器化部署中间件、多模块项目结构解读、核心配置深度解析以及服务

weixin_33766805的博客 361

决策树(分类树、回归树)

决策树 前言:第一篇博客,最近看完决策树,想着归纳一下,也方便自己以后回顾。写的会比较全面一些,可能会有很多不太正确的地方,欢迎大家交流指正 : ) 决策树模型: 决策树模型是运用于分类以及回归的一种树结构。决策树由节点和有向边组成,一般一棵决策树包含一个根节点、若干内部节点和若干叶节点。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选...

你午睡了吗 9万+

Feign调用服务报错:Load balancer does not have available server for client:xxx

问题:Feign调用服务报错:Load balancer does not have available server for client:xxx 原因:这个xxx服务未找到 解决思路: 1、先看看注册中心是否有这个xxx服务,服务名称必须是xxx,我们用的注册中心是nacos,发现还真的没有这个服务。 2、然后去看看配置文件bootstrap.yml, bootstrap.yml里面的服务名确实是xxx,没问题啊 server: port: 8009 spring: application:

Mr Mirror的博客 5万+

innovus:ccopt_design分段长tree操作

这步don't touch保证后面完整cts尽量不会动到已经长过的tree。需要给sub tree手写一个spec,参考create_ccopt_clock_tree_spec -file的写法,只写create_ccopt_clock_tree和skew group部分就行。

m0_61544122的博客 1675

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础

本节全面介绍了图神经网络 (Graph Neural Network, GNN) ,包括其在数据分析和机器学习中的重要性。首先探讨了图作为数据表示的相关概念及其在各个领域的广泛应用;然后深入探讨图学习的重要性,包括不同的应用和技术。最后,重点介绍了 GNN 架构,并对比了它与其他方法之间的原理和性能差异。

盼小辉丶的博客 15万+

【Java异常】com.netflix.client.ClientException: Load balancer does not have available server for client

本文目录 一、问题描述 二、错误原因 三、解决方案 方案1 方案2 一、问题描述 报错信息如下 Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: basic-iot-config at com.netflix.loadba...

No8g攻城狮的博客 10万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BUG——Load balancer does not have available server for client: PROJECT

异常 Load balancer does not have available server for client: PROJECT (百度翻译:负载平衡器没有可用于客户端的服务器:PROJECT) 解决 一、注册中心没有该服务: 1)PROJECT服务没有启动 2)没能注册到注册中心 二、没有找到指定服务: 1)名字写错了,比如我将PROJECT写成了PORJECT 三、一系列的配置忘写了,导致上面的可能发生了 1)pom.xml中的jar包 <dependency> <gr

Today_He的博客 4044

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最全解决:微服务之间调用出现Load balancer does not have available server for client

背景:现在是一个服务A要调用服务B(media-api)中的方法上传文件,因此需要再服务A中写一个feignclient,里面包含的是要调用的B服务的方法,然后出现找不到目标的情况。

m0_62314761的博客 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availabl...

一、异常信息 java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-one 二、分析原因 我的这个异常出现场景是这样的(我采用的是Spring Cloud中Feign组件来实现...

weixin_30748995的博客 2118

Load balancer does not have available server for client

Load balancer does not have available server for client

laiteng123的博客 4924

主服务调用微服务出现:Load balancer does not have available server for client:xxxx问题

主服务调用微服务出现:Load balancer does not have available server for client:xxxx问题, 原因:配置文件中注册consul的路径写错注册到了别的consul上去了,改为本地 启动运行测试成功 ...

qq_42865087的博客 1万+

Load balancer does not have available server for client: shiyaxin-provider

解析为:在java.net.SocketInputStream.socketRead0(本机方法)~[na:1.8.0_172]负载均衡器没有客户端shiyaxin-provider可用的服务器 springboot与springCloud的版本问题 一定要匹配,哪些启动器的版本,依赖版本 ...

ShiXinXin_Harbour的博客 639

记录一个找了3个小时的错误,Load balancer does not have available server for client

报错信息如下: com.netflix.client.ClientException:Loadbalancerdoesnothaveavailableserverforclient:xxx 我看了不下100篇博客,但是还是没有找到解决方法 例如: 在客户端的application.yml文件中添加以下配置即可,亲试有效,极力推荐! ribbon: eureka: ...

yhk19970220的博客 1万+
下一篇: LeetCode笔记 NO.704二分查找
Zyang_CodeBoy
博客等级 码龄1年 15粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值