【发布时间】:2021-02-11 19:24:09
【问题描述】:
我有
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/employee/**")
.uri("http://localhost:8081/")
.id("employeeModule"))
.build()
但是我想要一个动态派生值而不是http:://localhost:8081/,例如:
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder,
@Autowired val discoveryService: DiscoveryService) {
return builder.routes()
.route(r -> r.path("/employee/**")
.uri(discoveryService.getHost())
.id("employeeModule"))
这可能吗?我应该如何更改语法以自动装配 DiscoveryService?
【问题讨论】:
-
不应该是自动的(至少它曾经是)。您应该放置一个到服务(名称)的路由,它将(在运行时)使用该名称解析为要转发到的主机/url。
-
我希望这个 uri 是动态的
-
我知道您想要什么,但如果您指定服务名称,则会在需要时查找 URL,因此是动态的。
-
您的意思是放置服务的名称而不是本地主机?能否请您发布一个带有代码的示例?
标签: spring kotlin spring-cloud spring-cloud-config spring-cloud-gateway