如何解决升级到 spring-cloud-starter-netflix-eureka-client:jar:2.2.7.RELEASE 后 Eureka Ribbon Client 不工作
因此,我们将 spring-cloud-netflix 库从 void decider(int type) {
std::unique_ptr<Printer> prt{};
if (type == 1) {
prt = std::make_unique<CSV>();
} else {
prt = std::make_unique<TXT>();
}
prt->header();
}
升级到 2.2.2.RELEASE
。我没想到会出现严重的问题,但在测试时我一直看到这个错误。
2.2.7.RELEASE
我们还将 Netflix Zuul 与 spring Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: dummy-service
at com.netflix.loadbalancer.LoadBalancerContext.getServerFromloadBalancer(LoadBalancerContext.java:483) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
一起使用。
进一步调试后,我发现 spring-cloud-starter-netflix-zuul:2.2.7.RELEASE
中 ServerList
属性的实现实际上是 DynamicServerListLoadBalancer
而不是 ConfigurationBasedServerList
(它应该包装 DomainExtractingServerList
)。这一观察结果也与 spring-cloud 文档中的预期行为相矛盾 here
当 Eureka 与 Ribbon 结合使用时(即两者都在类路径上),ribbonServerList 会被 discoveryEnablednIWSServerList 的扩展覆盖,该扩展从 Eureka 填充服务器列表。它还用 NIWSdiscoveryPing 替换了 IPing 接口,NIWSdiscoveryPing 委托 Eureka 来确定服务器是否已启动。默认安装的 ServerList 是 DomainExtractingServerList。
我还注意到我的 discoveryEnablednIWSServerList
正在以传递方式下载 spring-cloud-starter-netflix-eureka-client:jar:2.2.7.RELEASE
,它没有 spring-cloud-netflix-eureka-client:jar:3.0.2
和 EurekaRibbonClientConfiguration
。 这是故意的吗?
DomainExtractingServerList
我期望 2.x 可以与 3.x 一起使用,因为该库正在被传递性地拉取,但这里没有发生这种情况。
顺便说一句,我还尝试在我的 pom 文件中添加内联 +- org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:jar:2.2.7.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-netflix-hystrix:jar:2.2.7.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-netflix-eureka-client:jar:3.0.2:compile
以覆盖 3.0.2,但随后遇到了一些未找到类定义的错误。
在这种情况下有什么建议?我应该在我的应用程序中创建一个 spring-cloud-netflix-eureka-client:jar:2.2.7.RELEASE
以便获得正确的 EurekaRibbonClientConfiguration
注入吗? ServerList
似乎不仅仅是创建一个 EurekaRibbonClientConfiguration
bean 实现。
我无法使用 ServerList
,因为我也在使用 Zuul,并且 Spring-cloud-zuul 在 2.2.7.RELEASE 处达到最大值。
我真的需要继续使用 Spring-cloud、Zuul、Ribbon 和 Eureka。
更新这是我的 pom 文件:
3.0.2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。