Плавное завершение работы поддерживается всеми четырьмя встроенными веб-серверами (Jetty, Reactor Netty, Tomcat и Undertow), а также реактивными веб-приложениями и веб-приложениями на основе сервлетов. Оно осуществляет в рамках закрытия контекста приложения и выполняется на самом раннем этапе остановки бинов SmartLifecycle
. Эта процедура обработки прекращения работы использует время ожидание, которое обеспечивает период отсрочки, в течение которого существующим запросам будет позволено завершиться, но передача новых запросов будет запрещена. Точный способ запрета передачи новых запросов зависит от используемого веб-сервера. Jetty, Reactor Netty и Tomcat перестанут принимать запросы на сетевом уровне. Undertow будет принимать запросы, но сразу же выдавать ответ "сервис недоступен" (503).
Чтобы активировать режим плавного завершения работы, сконфигурируйте свойство server.shutdown
, как показано в следующем примере:
server.shutdown=graceful
server:
shutdown: "graceful"
Чтобы настроить период времени ожидания, сконфигурируйте свойство spring.lifecycle.timeout-per-shutdown-phase
, как показано в следующем примере:
spring.lifecycle.timeout-per-shutdown-phase=20s
spring:
lifecycle:
timeout-per-shutdown-phase: "20s"
SIGTERM
. Более подробную информацию см. в документации к вашей IDE.