Завершить работу службы вне Spring Boot

Я пишу несколько простых микросервисов, чтобы понять, как работает Netflix Eureka.
Мне было интересно, существует ли общая возможность программного отключения службы в Java с немедленной отменой регистрации в реестре служб Eureka в результате.
Я нашел решение с конечной точкой привода Spring Boot (с запросом POST к service-URL/actuator/shutdown).
Как можно добиться того же результата, если я хочу отключить службу, не основанную на Spring Boot?


person Renata Samà    schedule 16.06.2018    source источник


Ответы (1)


очень абстрактным образом, каждый процесс, который работает бесконечно, например, сервер, который слушает запросы, в основном представляет собой цикл while, например

while flag:
  listen and process request 

shutdown - это просто API, влияющий на flag и заставляющий программу существовать из цикла и возобновлять прямой поток, который приведет к завершению этой программы.

поэтому, чтобы отключить службу, которая не является весенней загрузкой, вам нужно создать API, который может управлять потоком кода, как указано выше.

Кроме того, spring boot — это очень надежная и минимальная оболочка, поэтому вы можете включить загрузку Spring почти в любую службу и программу на Java.

обратите внимание, что Eureka поддерживает ручное переопределение состояния служб, поэтому вы можете указать Eureka игнорировать и отменить регистрацию одной или нескольких служб независимо от их фактического состояния.

с большинством служб обнаружения, которые работают в пассивном режиме (не инициируйте активный контакт со службами), например, eureka каждая служба отправляет проверку работоспособности каждый x раз, сервер обнаружения узнает, что служба находится в автономном режиме, только по истечении x времени и работоспособности требуется проверка (есть и другие параметры, такие как пороги и специальные режимы работы, которые также принимаются во внимание)

Я отсылаю вас к этому сообщению для получения дополнительной информации о контроле скорости выселения "spring-boot-eureka" (особенно последнего комментарий)

person shahaf    schedule 16.06.2018
comment
Благодарю вас! Очень понятное объяснение того, как это работает! Любые подсказки о том, как достичь этого? Чего я не понимаю, так это почему простого SpringApplication.exit(...) или завершения из IDE недостаточно для немедленной отмены регистрации. - person Renata Samà; 17.06.2018