目前SpringBoot内置的四个嵌入式Web服务器(Jetty,Reactor Netty,Tomcat和Undertow)以及响应式和基于Servlet的Web应用程序都支持优雅关机。
配置宽限期后,在关闭时,Web服务器将不再允许新请求(但是并不会立刻返回失败),并且将等待宽限期以使活动请求完成。
Demo尝试
1. SpringBoot版本大于2.3.0.RELEASE
2. 在application.properties添加配置
## 开启优雅停机, 如果不配置是默认IMMEDIATE, 立即停机
server.shutdown=graceful
## 优雅停机宽限期时间
spring.lifecycle.timeout-per-shutdown-phase=60s
3.编写接口代码测试
@RestController
@Slf4j
public class TestController {
@SneakyThrows
@GetMapping(value = "/sleep/{num}", produces = "application/json")
public String sleep(@PathVariable int num) {
log.info("模拟业务处理{}秒", num);
Long serverTime = System.currentTimeMillis();
Thread.sleep(num * 1000L);
log.info("业务处理完成,耗时{}秒", num);
return "hello world";
}
}
4.执行测试方法
未超过停机宽限时间:

本文详细介绍如何在SpringBoot 2.3.0及以上版本中启用优雅停机,配置宽限期,并通过实例演示不同web服务器的行为差异。通过GET接口模拟业务处理,展示了在停机宽限时间内请求处理和超时后的响应。
最低0.47元/天 解锁文章
3173

被折叠的 条评论
为什么被折叠?



