Load balancer does not have available server for client

博客作者在项目中遇到了一个错误,最初误认为是Feign的问题,但实际上是Ribbon的负载均衡算法出现了问题。作者自定义了Ribbon的负载均衡方法,并在修改过程中不小心删除了正确的`@Override`方法,被系统自动补全为返回null的函数,导致了错误。修复方法是恢复原本正确的选择服务器的方法,避免返回null。

这个问题网上很多都说是feign的问题,我这里其实是ribbon的问题

我的项目本来是不报错的,然后不知道改了什么报了这个错,网上搜遍了都没有解决

我自定义了Feign的拦截器和Ribbon的负载均衡算法,就两个一起排除

先把Feign的拦截器排除了,发现其实是Ribbon的问题,我的改动是,

本来ribbon自定义负载均衡方法要重写下面这个

@Override
public Server choose(Object key) {
    return choose(getLoadBalancer(),key);
}

上面这段代码是对的,然后我手滑删了,就直接alt+enter,系统自动给我补全了下面这个函数

@Override
public Server choose(Object o) {
    return null;
}

这个就是报错的原因,改为原来的,不返回null就行了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值