«1. Обзор

В этом кратком руководстве мы увидим, как мы можем настроить приложения Spring Boot для более изящной обработки завершения работы.

2. Мягкое завершение работы

Начиная с Spring Boot 2.3, Spring Boot теперь поддерживает функцию плавного завершения работы для всех четырех встроенных веб-серверов (Tomcat, Jetty, Undertow и Netty) как на сервлетных, так и на реактивных платформах.

Чтобы включить корректное завершение работы, все, что нам нужно сделать, это установить для свойства server.shutdown значение изящно в нашем файле application.properties:

server.shutdown=graceful

Тогда Tomcat, Netty и Jetty перестанут принимать новые запросы. на сетевом уровне. Undertow, с другой стороны, продолжит принимать новые запросы, но немедленно отправит клиентам ответ 503 Service Unreachable.

По умолчанию значение этого свойства равно немедленному, что означает немедленное завершение работы сервера.

Некоторые запросы могут быть приняты непосредственно перед началом фазы корректного завершения работы. В этом случае сервер будет ждать, пока эти активные запросы закончат свою работу в течение определенного периода времени. Мы можем настроить этот льготный период, используя свойство конфигурации spring.lifecycle.timeout-per-shutdown-phase:

spring.lifecycle.timeout-per-shutdown-phase=1m

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

3. Заключение

В этом коротком руководстве мы увидели, как можно воспользоваться новой функцией корректного завершения работы в Spring Boot 2.3.