Настройте Spring Boot с помощью Reactor Netty для прослушивания 2 портов

Как настроить Spring Boot с Reactor Netty для прослушивания двух отдельных портов (в дополнение к порту Actuator) и привязать к каждому отдельные @RestController?

Вот вариант использования: у меня есть один ограниченный контекст с четырьмя вызовами RESTful API. Два будут выставлены наружу, два нельзя. Каждая пара будет защищена по-своему, но нам нужен дополнительный уровень защиты, чтобы внутренние вызовы не маршрутизировались извне. Такие платформы, как Kubernetes, поддерживают это, направляя трафик только на те порты, которые мы специально предоставляем.

Поэтому я хотел бы, чтобы Reactor Netty прослушивал следующие порты и направлял только соответствующие запросы на каждый порт:

  1. На запросы 8080 отвечает только класс ExternalRestController (конфигурация по умолчанию или легко переопределяется с помощью server.port=8080).
  2. На запросы 8081 отвечает только класс InternalRestController.
  3. На запросы 8082 отвечает поддержка Actuator SpringBoot (легко настраивается с помощью management.server.port=8082)

Если это невозможно с моделью аннотаций Spring Boot с использованием аннотаций @RestController, я бы рассмотрел возможность использования новой поддержки RouterFunction.


person peterl    schedule 31.10.2018    source источник
comment
может быть не то, что вы ищете, но вы определенно можете сделать это с многомодульным проектом maven. Вы даже можете добавить один модуль к другому в качестве зависимости и запустить только этот модуль, чтобы увидеть, как работают оба сервера.   -  person Christian Meyer    schedule 23.11.2019


Ответы (1)


В Spring Boot нет встроенной поддержки для сопоставления отдельных контроллеров с отдельными портами в Spring MVC, WebFlux или WebFlux.Fn. Это возможно, как показывает отдельный порт управления актуатора, но это потребует достаточно большого объема работы.

Для запуска на отдельном порту Actuator использует контекст дочернего приложения с отдельным встроенным веб-сервером, настроенным для прослушивания на отдельном порту. Вы можете имитировать это расположение в своем собственном приложении, используя источник Spring Boot в качестве вдохновения. ManagementContextAutoConfiguration — хорошее место для начала.

person Andy Wilkinson    schedule 31.10.2018