【问题标题】:spring-cloud-loabalancer configuring static server listspring-cloud-loabalancer 配置静态服务器列表
【发布时间】: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


【解决方案1】:

根据@spencergibb 的评论,我想这样的事情应该可行:

spring:
  cloud:
    discovery:
      client:
        simple:
          instances:
            foo-service:
              - instanceId: foo1
                serviceId: foo-service
                host: localhost
                port: 9876```

【讨论】:

猜你喜欢
  • 2017-09-07
  • 2017-07-25
  • 2023-03-24
  • 1970-01-01
  • 2018-08-24
  • 2016-09-12
  • 2020-09-27
  • 2021-03-21
  • 1970-01-01
相关资源
最近更新 更多