首页新闻找找看学习计划

Feign Client获取Eureka Server的服务信息失败

0
悬赏园豆:20 [已关闭问题] 关闭于 2019-07-12 10:46

建立了下面三个项目 用来测试 Feign Client首次访问失败的问题:
EurekaServer
生产者:EurekaClient1
消费者:EurekaClient2

先启动EurekaServer,再启动EurekaClient2,再启动 EurekaClient1(间隔时间很短)。
服务启动后,通过 消费者EurekaClient2 访问——会通过Feign Client访问EurekaClient1的接口。

可是,一直失败!

生产者启动后注册的日志:
DiscoveryClient_CLIENT1/ben:client1:8080 - registration status: 204

也可以通过EurekaServer的网页查看到:
http://127.0.0.1:8761/

日志显示,在 生产者EurekaClient1 启动后的50秒左右没有收到来自 EurekaClient2的请求。
检查 消费者EurekaClient2 的日志发现,其在执行请求时没有得到EurekaClient1服务的信息——为空。
2019-07-11 14:05:39.062 INFO 9720 --- [strix-client1-1] c.netflix.loadbalancer.BaseLoadBalancer : Client: client1 instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=client1,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
但是,在 访问 消费者EurekaClient1 的服务时,EurekaClient1已经启动并在EurekaServer注册了。

很奇怪。

在EurekaClient1启动50秒后,EurekaClient2才通过Feign Client访问EurekaClient1的服务。

不过,EurekaClient1启动后,可以直接通过浏览器访问它的服务。

目前判断,问题出在 消费者EurekaClient2 和 EurekaServer 之间的“沟通”时——EurekaServer 没有及时提供信息给EurekaClient2。

三个项目的application.yml配置如下:

问题补充:

看来和Ribbon的加载模式有关系
但是,配置了Ribbon的饥饿加载模式也不可用
ribbon.eager-load.enabled=true
ribbon.eager-load.clients=client1

配置后,获取服务器为空的日志是在项目启动前打印出来了。

智人N的主页 智人N | 小虾三级 | 园豆:601
提问于:2019-07-11 14:54
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册