控制 Spring Boot 优雅关闭

sim*_*onC 7 shutdown application-shutdown shutdown-hook spring-boot

Spring Boot 有没有办法控制应用程序的正常关闭?

我知道您可以@PreDestroy在 bean 中拥有方法,但是如何控制这些@PreDestroy方法的调用顺序?

您可以拥有多个相互依赖的 bean,上下文的关闭是否已经查找此依赖项并@PreDestroy以正确的顺序调用方法?

例如,我想要完成的是:
1)停止在休息端点上侦听新请求
2)防止兔子消息侦听器接受新消息
3)等待在关闭之前已开始但尚未完成的所有处理。

Nir*_*ane 3

Spring Boot 2.3.0添加了对优雅关闭的支持。

您可以通过设置server.shutdown=graceful属性来启用正常关闭。

要配置超时期限,您可以使用:

spring.lifecycle.timeout-per-shutdown-phase=20s
Run Code Online (Sandbox Code Playgroud)

Spring Boot 文档


如果您无法升级到 Spring Boot 2.3,那么您可以检查以下项目: