在Spring Boot中,有没有一种方法可以控制应用程序的优雅关闭?
我知道您可以在bean中拥有@PreDestroy
方法,但是如何控制这些@PreDestroy
方法被调用的顺序呢?
您可以有多个依赖于彼此的bean,在关闭上下文时,是否已经查找此依赖关系并按正确顺序调用@PreDestroy
方法?
例如,我想要实现的是:
1)停止监听REST端点上的新请求
2)防止Rabbit消息侦听器接受新消息
3)等待在关闭之前已经开始但尚未完成的所有处理。
在Spring Boot中,有没有一种方法可以控制应用程序的优雅关闭?
我知道您可以在bean中拥有@PreDestroy
方法,但是如何控制这些@PreDestroy
方法被调用的顺序呢?
您可以有多个依赖于彼此的bean,在关闭上下文时,是否已经查找此依赖关系并按正确顺序调用@PreDestroy
方法?
例如,我想要实现的是:
1)停止监听REST端点上的新请求
2)防止Rabbit消息侦听器接受新消息
3)等待在关闭之前已经开始但尚未完成的所有处理。
Spring Boot 2.3.0 增加了对 优雅关闭 的支持。
您可以通过设置 server.shutdown=graceful
属性来启用优雅关闭。
要配置 超时 时间,您可以使用:
spring.lifecycle.timeout-per-shutdown-phase=20s