springboot 程序设计优雅退出

本文介绍了SpringBoot2.3版本后如何实现优雅退出功能,包括配置文件设置、代码中添加ShutdownHook、自定义关闭逻辑以及bean销毁方法。强调了gracefulshutdown的缓冲期设置及其注意事项。
摘要由CSDN通过智能技术生成

一 springboot优雅退出

1.1 概述

在springboot2.3版本后,实现了优雅退出功能。当server.shutdown=graceful启用时,在 web 容器关闭时,web 服务器将不再接收新请求,并将剩余活动执行完成给设置一个缓冲期。缓冲期 timeout-per-shutdown-phase 配置,默认时间为 20s, 意味着最大等待 20s,超时无论线程任务是否执行完毕都会停机处理,一定要合理设置缓冲期大小。

注意:spring.main.register-shutdown-hook=false; 默认值为true,  设置为false,不管其他配置进行怎样的配置,都不走优雅退出逻辑。

kill -9 强制关闭进程,不能触发shutdownhook,也就不能触发springBoot的优雅停机,也就是说不管怎么配置也不能触发优雅停机。

Spring Boot 优雅停机——Graceful Shutdown - 简书

1.2 操作配置

1.代码

2.配置文件配置

4.打包测试

5.请求第一次:大约15s后响应 小于默认超时时间20s,则在超时范围内,则满足优雅停机。

6.再次请求,然后ctr+c 终止程序 ,此处执行kill -2 而不是kill -9kill -2 相当于快捷键Ctrl + C会触发 Java 的 ShutdownHook 事件处理。

7.最后显示

1.3 操作配置 2

1.配置程序关闭时,自定义的方法实现一些逻辑处理

@SpringBootApplication
public class App 
{
    /**
     * 启动器不能放到contoller的子包下,也不能放到和contoller平级的包下
     * @param args
     */
    /**
    * @author liujianfu
    * @date 2020/7/23 0023 下午 2:45
    * @param [args]        
    * @return void
    */
    public static void main( String[] args )
    {
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("jvm  shutdown。。。。。");
            }
        }));
        SpringApplication.run(App.class);
        System.out.println("启动完成!!!");
    }

查看模拟关闭时,自定义关闭方法执行逻辑

1.4 操作配置 3

bean销毁时,的注销方法

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值