配置 Spring 使用 Reactor Netty 启动以侦听 2 个端口
Configure Spring Boot with Reactor Netty to Listen on 2 Ports
如何配置 Spring 使用 Reactor Netty 启动以侦听两个单独的端口(除了 Actuator 端口)并将单独的 @RestController
连接到每个端口?
这是用例:我有一个有界上下文,它有四个 RESTful API 调用。两个会暴露在外,两个不能。每一对都将以自己的方式受到保护,但我们需要一个 额外的 保护层,这样内部调用就无法从外部路由。像 Kubernetes 这样的平台通过仅将流量路由到我们专门公开的端口来支持这一点。
所以我希望 Reactor Netty 监听以下端口并仅将适当的请求路由到每个端口:
8080
请求仅由 ExternalRestController
class 响应(默认配置或很容易被 server.port=8080
覆盖)。
8081
请求仅由 InternalRestController
class. 响应
8082
请求由 SpringBoot 的执行器支持响应(使用 management.server.port=8082
轻松配置)
如果 Spring Boot 的注释模型使用 @RestController
注释无法做到这一点,我会考虑使用新的 RouterFunction
支持。
Spring Boot 中没有开箱即用的支持,用于将单个控制器映射到 Spring MVC、WebFlux 或 WebFlux.Fn 中的单个端口。这是可能的,如 Actuator 的单独管理端口所示,但这将需要相当大的工作量。
至 运行 在单独的端口上,Actuator 使用子应用程序上下文和单独的嵌入式 Web 服务器,配置为在单独的端口上侦听。您可以使用 Spring Boot 的源代码作为灵感,在您自己的应用程序中模仿这种安排。 ManagementContextAutoConfiguration
是一个很好的起点。
如何配置 Spring 使用 Reactor Netty 启动以侦听两个单独的端口(除了 Actuator 端口)并将单独的 @RestController
连接到每个端口?
这是用例:我有一个有界上下文,它有四个 RESTful API 调用。两个会暴露在外,两个不能。每一对都将以自己的方式受到保护,但我们需要一个 额外的 保护层,这样内部调用就无法从外部路由。像 Kubernetes 这样的平台通过仅将流量路由到我们专门公开的端口来支持这一点。
所以我希望 Reactor Netty 监听以下端口并仅将适当的请求路由到每个端口:
8080
请求仅由ExternalRestController
class 响应(默认配置或很容易被server.port=8080
覆盖)。8081
请求仅由InternalRestController
class. 响应
8082
请求由 SpringBoot 的执行器支持响应(使用management.server.port=8082
轻松配置)
如果 Spring Boot 的注释模型使用 @RestController
注释无法做到这一点,我会考虑使用新的 RouterFunction
支持。
Spring Boot 中没有开箱即用的支持,用于将单个控制器映射到 Spring MVC、WebFlux 或 WebFlux.Fn 中的单个端口。这是可能的,如 Actuator 的单独管理端口所示,但这将需要相当大的工作量。
至 运行 在单独的端口上,Actuator 使用子应用程序上下文和单独的嵌入式 Web 服务器,配置为在单独的端口上侦听。您可以使用 Spring Boot 的源代码作为灵感,在您自己的应用程序中模仿这种安排。 ManagementContextAutoConfiguration
是一个很好的起点。