配置 FeignClient 以通过 env 变量使用 url 而无需禁用 Eureka
Configure FeignClient to use url by env variable without disabling Eureka
我当前的环境是 Spring 使用 Eureka 的云设置,并且我在应用程序中有多个 Feign 客户端。我想要做的是允许我的大多数 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
我当前的环境是 Spring 使用 Eureka 的云设置,并且我在应用程序中有多个 Feign 客户端。我想要做的是允许我的大多数 Feign 客户通过发现服务器解析他们的服务,但阻止一两个这样做,以便使用我当前正在开发的本地实例。我是 运行 我正在开发的服务和本地的客户端应用程序。
我希望客户端应用程序使用发现来进行所有服务发现,并覆盖一个 Feign 客户端以仅使用我的本地 运行 服务。
有没有办法在不禁用客户端上的 Eureka 的情况下执行此操作?我已经探讨了这两个问题 (
您可以为特定的 FeignClient 指定 URL 而无需使用 属性 <ribbonclientname>.ribbon.NIWSServerListClassName
属性.
假设用于定向路由的服务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