【发布时间】:2020-05-01 04:59:09
【问题描述】:
我们正在逐步远离 spring-cloud Netflix OSS 生态系统。目前我们正在实施 spring-cloud-loadbalancer 并移除 Ribbon。 然而,我们过去在集成测试中有很多静态服务,现在随着从功能区转向 spring-cloud-loadbalancer 这些属性不再被拾取。 即:
foo-service.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
foo-service.ribbon.listOfServers=localhost:9876
我们已通过以下方式迁移到使用 spring-cloud-loadbalancer
首先,我们使用 @LoadBalanced 像这样注释我们的 Webclient.Builder
@Bean
@LoadBalanced
fun webClientBuilder() = WebClient.builder()
然后我们像这样在客户端类上添加了@LoadBalancerClient注解
@LoadBalancerClient(name = "foo-service", configuration = [FooServiceConfiguration::class])
class FooServiceClient(private val basicAuthWebClient: WebClient)
这会导致我们的测试因 foo-service 的 UnknownHostException 而失败。
现在我的问题是我们如何在新的 spring-cloud-loadbalancer 中配置这个静态服务器列表?
【问题讨论】:
-
功能区属性不适用于 Spring Cloud 负载均衡器。您可以使用
spring.cloud.discovery.client.simple.*属性。见cloud.spring.io/spring-cloud-static/spring-cloud-commons/… -
@J.Pip 您最终使用了
spring.cloud.discovery.client.simple而不是NIWSServerListClassName的哪个属性? -
看起来像
NIWSServerListClassName这样的功能区相关配置不适用于 spring cloud
标签: spring spring-cloud spring-webflux spring-webclient