SpringCloud FeignClient声明式服务调用(A调用服务B/C,B/C重启后必须重启A后才能成功调用配置项采坑记录)
-
- [1. 报错(info级别的警告信息)](#1. 报错(info级别的警告信息))
- [2. 原因:使用了默认了cache负载均衡,或者禁用了ribbonLoadBalancer](#2. 原因:使用了默认了cache负载均衡,或者禁用了ribbonLoadBalancer)
- [3. 解决](#3. 解决)
- 参考
SpringCloud 注册中心eureka,配置中心config,其他服务(可随时拓展/缩减节点),feign声明式服务调用,ribbon负载均衡,hytrix熔断等成熟的组件,让SpringCloud上手简单,好用。
遇到一个困扰的问题:服务A,B,C都注册到了同一个注册中心,服务A会Feign调用B/C服务的接口,当B/C服务重启后,假若不重启服务A,则无法调用到接口。
通过restTemplate接口获取B/Cf服务地址并打印,在重启服务B/C前后,均可以看到 原始的ip:port,原始的ip:port+新ip:port,新ip:port,可判断eureka与服务之间是正常通信注册与下线的。
然而为何还是调不到。
可能是负载均衡不对,然后查看启动日志:撇到一行:Spring Cloud LoadBalancer is currently working with the default cache.
1. 报错(info级别的警告信息)
警告⚠完整信息如下:
2. 原因:使用了默认了cache负载均衡,或者禁用了ribbonLoadBalancer
3. 解决
正确的应该如下:
进一步检查配置项发现bootstrap.yml里禁止了ribbonLoadBalancer (⊙﹏⊙)
删掉/或者修改为如下好了,呃呃呃呃...