spring-cloud-loabalancer 配置静态服务器列表

J.P*_*Pip 6 spring spring-cloud spring-webflux spring-webclient

我们正在一步一步地脱离 spring-cloud Netflix OSS 生态系统。目前我们正在实现 spring-cloud-loadbalancer 并删除 Ribbon。然而,我们过去在集成测试中有很多静态服务,现在随着从功能区转向 spring-cloud-loadbalancer,这些属性不再被选取。IE:

foo-service.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
foo-service.ribbon.listOfServers=localhost:9876
Run Code Online (Sandbox Code Playgroud)

我们已通过以下方式迁移到使用 spring-cloud-loadbalancer
首先,我们使用 @LoadBalanced 注释我们的 Webclient.Builder,如下所示

@Bean
@LoadBalanced
fun webClientBuilder() = WebClient.builder()
Run Code Online (Sandbox Code Playgroud)

然后我们在客户端类上添加 @LoadBalancerClient 注释,如下所示

@LoadBalancerClient(name = "foo-service", configuration = [FooServiceConfiguration::class])
class FooServiceClient(private val basicAuthWebClient: WebClient)
Run Code Online (Sandbox Code Playgroud)

这会导致我们的测试失败,并出现 foo-service 的 UnknownHostException。

现在我的问题是我们如何在新的 spring-cloud-loadbalancer 中配置这个静态服务器列表?

小智 4

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

spring:
  cloud:
    discovery:
      client:
        simple:
          instances:
            foo-service:
              - instanceId: foo1
                serviceId: foo-service
                host: localhost
                port: 9876```
Run Code Online (Sandbox Code Playgroud)