ribbon的注解使用报错--No instances available for [IP]

使用RestTemplate类调用其他系统的url的时候,加上ribbon的注解@LoadBalanced上这个注解之后访问,就报错了。





报错如下:

ribbon的注解使用报错--No instances available for [IP]_第1张图片

因为这里你不能直接访问地址,需要把地址改成你所调用的ur在eureka上注册的application.name


将代码修改为如下,就可以访问了


具体原因,我查看了一下源码和网上找了一下,貌似是在加了了注解 @LoadBalanced 之后,我们的r estTemplate 会走这个类RibbonLoadBalancerClient,断点进入了如下的页面,serverid必须是我们访问的服务名称 ,当我们直接输入ip的时候获取的server是null,就会抛出异常


ribbon的注解使用报错--No instances available for [IP]_第2张图片


使用服务名称如下图:

ribbon的注解使用报错--No instances available for [IP]_第3张图片


仔细想了想,因为ribbon的作用是负载均衡,那么你直接使用ip地址,那么就无法起到负载均衡的作用,因为每次都是调用同一个服务,当你使用的是服务名称的时候,他会根据自己的算法去选择具有该服务名称的服务。

你可能感兴趣的:(技术积累)