使用Reactor Netty配置Spring Boot以监听2个端口

时间:2018-10-31 06:30:02

标签: java spring spring-boot reactor-netty

如何配置带有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轻松配置)响应。

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

1 个答案:

答案 0 :(得分:1)

Spring Boot中没有现成的支持,无法将单个控制器映射到Spring MVC,WebFlux或WebFlux.Fn中的单个端口。如执行器的单独管理端口所示,这是有可能的,但这将需要大量工作。

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

相关问题