配置 FeignClient 以通过 env 变量使用 url 而无需禁用 Eureka

Configure FeignClient to use url by env variable without disabling Eureka

我当前的环境是 Spring 使用 Eureka 的云设置,并且我在应用程序中有多个 Fe​​ign 客户端。我想要做的是允许我的大多数 Feign 客户通过发现服务器解析他们的服务,但阻止一两个这样做,以便使用我当前正在开发的本地实例。我是 运行 我正在开发的服务和本地的客户端应用程序。

我希望客户端应用程序使用发现来进行所有服务发现,并覆盖一个 Feign 客户端以仅使用我的本地 运行 服务。

有没有办法在不禁用客户端上的 Eureka 的情况下执行此操作?我已经探讨了这两个问题 (, ) 并且没有设法让 listOfServers 字段产生任何影响,除非我禁用了 Eureka。如果这对我的工作很重要,我做了我希望连接的服务,而不是在尤里卡注册。

您可以为特定的 FeignClient 指定 URL 而无需使用 属性 <ribbonclientname>.ribbon.NIWSServerListClassName 属性.

禁用 Eureka 客户端

假设用于定向路由的服务id是testA。您可以在不禁用 Eureka 客户端的情况下定义以下 属性。

testA:
  ribbon:
    NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
    listOfServers: ${url for your test server}

如果您将 com.netflix.loadbalancerConfigurationBasedServerList 指定为 NIWSServerListClassName,Feign 客户端中的功能区客户端将使用通过 listOfServers 属性 提供的地址,而不会禁用 eureka。

我找到了一种以非常简单的方式传递环境变量的方法:

interface FeignClient 

  @FeignClient(url = "https://"+"${url}", name = "limit", decode404 = true)


interface HbFeignClient {

  @GetMapping("/credit-limit")
  fun getLimitCompany(@RequestParam(required = true) companyId: Long): ResponseEntity<Any>

属性

#URL
url=${URL}

.env

URL=https:localhost:8080