Я работаю над проектом, используя Spring boot 2.1 и встроенный Jetty Server 9, и столкнулся с проблемой реализации механизма изящного завершения работы. После обсуждения с командой было решено реализовать следующую политику постепенного отключения:
- все уже поступающие запросы должны быть завершены
- все входящие запросы после сигнала
SIGTERM
должны быть отклонены с 503 status code
- конечная точка работоспособности должна работать после
SIGTERM
Кроме того, приложение использует mongodb в качестве базы данных, и если запрос связывается с mongo, он должен выполняться как обычно.
Если я установил флаг setStopAtShutdown(true)
и setStopTimeout()
сервера Jetty со всеми включенными конечными точками /health
начинает быть недоступен, но без этих опций они получают новые запросы после SIGTERM
. Также контекст приложения вызывает метод close()
и bean-компоненты начинают разрушаться. Таким образом, запросы зависят от сбоя Монго с исключениями. Можем ли мы помочь мне с этой проблемой?