当我们的SpringBoot项目重新发布的时候,如果暴力停止,那么已经进来的请求会被直接终止,可能会导致一些问题。SpringBooot(2.3版本以上)支持的几种容器都支持优雅停止,通过简单的配置就可生效。
spring:
lifecycle:
timeout-per-shutdown-phase: 30s
server:
shutdown: graceful
其中server.shutdown有两种
/**
* Configuration for shutting down a {@link WebServer}.
*
* @author Andy Wilkinson
* @since 2.3.0
*/
public enum Shutdown {
/**
* The {@link WebServer} should support graceful shutdown, allowing active requests
* time to complete.
*/
GRACEFUL,
/**
* The {@link WebServer} should shut down immediately.
*/
IMMEDIATE;
}
一种是IMMEDIATE(立即终止),另外一种是优雅停止,优雅停止的意思是拒绝新的请求进来,同时等已经进来的请求处理完(在缓冲时间内)再终止。
spring.lifecycle.timeout-per-shutdown-phase 即为缓冲时间。