2

您如何使用 Reactor Netty 配置 Spring Boot 以侦听两个单独的端口(除了 Actuator 端口)并将单独@RestController的 ' 绑定到每个端口?

这是用例:我有一个有四个 RESTful API 调用的有界上下文。两个会外露,两个不能。每一对都将以自己的方式进行保护,但我们需要额外的保护层,以使内部调用无法在外部路由。像 Kubernetes 这样的平台通过仅将流量路由到我们专门公开的端口来支持这一点。

所以我希望 Reactor Netty 监听以下端口并仅将适当的请求路由到每个端口:

  1. 8080请求仅由ExternalRestController类响应(默认配置或用 轻松覆盖server.port=8080)。
  2. 8081请求仅由InternalRestController类响应。
  3. 8082请求由 SpringBoot 的 Actuator 支持响应(易于配置management.server.port=8082

如果使用注释的 Spring Boot 注释模型无法做到这一点@RestController,我会考虑使用新的RouterFunction支持。

4

1 回答 1

1

Spring Boot 中没有开箱即用的支持,用于将各个控制器映射到 Spring MVC、WebFlux 或 WebFlux.Fn 中的各个端口。如执行器的单独管理端口所示,这是可能的,但需要相当多的工作。

为了在单独的端口上运行,Actuator 使用带有单独的嵌入式 Web 服务器的子应用程序上下文,该服务器配置为侦听单独的端口。您可以使用 Spring Boot 的源代码作为灵感,在自己的应用程序中模仿这种安排。ManagementContextAutoConfiguration是一个很好的起点。

于 2018-10-31T07:45:07.417 回答