Spring Boot 在关闭时,如果有请求没有响应完,在不同的容器会出现不同的结果,例如,在 Tomcat 和 Undertow 中会出现中断异常,那么就有可能对业务造成影响。所以,优雅停机非常有必要性,目前官方是没有提供很好的策略来实现。
Spring Boot Application 在接收到停机信号后,可以通过 DisposableBean 接口 、 @PreDestroy 注解 或者 ContextClosedEvent 事件来处理优雅停机的相关逻辑。
Tomcat 优雅停机
1 |
|
Undertow 优雅停机
1 |
|
1 |
|
1 |
|
Jetty 优雅停机
默认支持所有请求完毕后再关闭。
缺点:客户端接收不到响应,有待改进!