如何配置带有Reactor Netty的Spring Boot来侦听两个单独的端口(除了Actuator端口),并将每个单独的@RestController
绑在一起?
这里是用例:我有一个有界的上下文,其中包含四个RESTful API调用。两个将在外部暴露,两个不能。每对将以其自己的方式进行保护,但是我们需要一个额外的保护层,以使内部调用无法在外部路由。像Kubernetes这样的平台通过仅将流量路由到我们专门公开的端口来支持此功能。
所以我希望Reactor Netty侦听以下端口并将仅适当的请求路由到每个端口:
8080
请求仅由ExternalRestController
类响应(默认配置或容易被server.port=8080
覆盖)。8081
请求仅由InternalRestController
类响应。8082
请求由SpringBoot的Actuator支持(通过management.server.port=8082
轻松配置)响应。如果使用@RestController
注释的Spring Boot注释模型无法做到这一点,我会考虑使用新的RouterFunction
支持。
答案 0 :(得分:1)
Spring Boot中没有现成的支持,无法将单个控制器映射到Spring MVC,WebFlux或WebFlux.Fn中的单个端口。如执行器的单独管理端口所示,这是有可能的,但这将需要大量工作。
要在单独的端口上运行,执行器将子应用程序上下文与单独的嵌入式Web服务器一起使用,该嵌入式Web服务器配置为在单独的端口上进行侦听。您可以利用Spring Boot的源代码在自己的应用程序中模仿这种安排。 ManagementContextAutoConfiguration
是一个很好的起点。