1.添加钩子函数,钩子函数中指定要调用的方法

  1. @PostConstruct
  2. public void run() {
  3. this.zkClient.start(this);
  4. this.schedulerService.start();
  5. try {
  6. logger.info("start Quartz server...");
  7. QuartzExecutors.getInstance().start();
  8. } catch (Exception e) {
  9. try {
  10. QuartzExecutors.getInstance().shutdown();
  11. } catch (SchedulerException e1) {
  12. logger.error("QuartzExecutors shutdown failed : " + e1.getMessage(), e1);
  13. }
  14. logger.error("start Quartz failed", e);
  15. }
  16. Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
  17. @Override
  18. public void run() {
  19. if (Stopper.isRunning()) {
  20. close("shutdownHook");
  21. }
  22. }
  23. }));
  24. }

2.指定close方法要执行的一些动作

  1. public void close(String cause) {
  2. try {
  3. //execute only once
  4. if (Stopper.isStopped()) {
  5. return;
  6. }
  7. logger.info("master server is stopping ..., cause : {}", cause);
  8. // set stop signal is true
  9. Stopper.stop();
  10. try {
  11. //thread sleep 3 seconds for thread quietly stop
  12. Thread.sleep(3000L);
  13. } catch (Exception e) {
  14. logger.warn("thread sleep exception ", e);
  15. }
  16. //close
  17. this.schedulerService.close();
  18. this.zkClient.close();
  19. //close quartz
  20. try {
  21. QuartzExecutors.getInstance().shutdown();
  22. logger.info("Quartz service stopped");
  23. } catch (Exception e) {
  24. logger.warn("Quartz service stopped exception:{}", e.getMessage());
  25. }
  26. } catch (Exception e) {
  27. logger.error("master server stop exception ", e);
  28. } finally {
  29. // System.exit(-1);
  30. }
  31. }

3.使用kill命令验证

  1. kill pid

优雅关闭springboot应用的更多相关文章

  1. 【积累】如何优雅关闭SpringBoot Web服务进程

    1.使用ps ef查出进程对应的pid. 2.使用kill -15 pid结束进程. 为什么不使用kill -9 pid,个人理解kill -15 pid更优雅,能在结束进程前执行spring容器清理 ...

  2. SpringBoot如何优雅关闭(SpringBoot2.3&Spring Boot2.2)

    SpringBoot如何优雅关闭(SpringBoot2.3&Spring Boot2.2) 优雅停止&暴力停止 暴力停止:像日常开发过程中,测试区或者本地开发时,我们并不会考虑项目关 ...

  3. 如何优雅关闭 Spring Boot 应用

    ## 前言 随着线上应用逐步采用 SpringBoot 构建,SpringBoot应用实例越来多,当线上某个应用需要升级部署时,常常简单粗暴地使用 kill 命令,这种停止应用的方式会让应用将所有处理 ...

  4. 如何关闭Springboot应用服务

    背景 以往的单机应用会采用kill方式关闭应用服务,但是这种关闭应用的方式在springboot中会让当前应用将所有处理中的请求丢弃,返回失败响应.我们在处理重要业务逻辑要极力避免的这种响应失败在,所 ...

  5. Spring-IOC 在非 web 环境下优雅关闭容器

    当我们设计一个程序时,依赖了Spring容器,然而并不需要spring的web环境时(Spring web环境已经提供了优雅关闭),即程序启动只需要启动Spring ApplicationContex ...

  6. Socket编程中的强制关闭与优雅关闭及相关socket选项

    以下描述主要是针对windows平台下的TCP socket而言. 首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包( ...

  7. 使用RunTime.getRunTime().addShutdownHook优雅关闭线程池

    有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源. RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.当然这个 ...

  8. 优雅关闭web服务的方式

    优雅关闭web服务 DBHelper, err = gorm.Open("mysql", "root:root@(115.159.59.129:3306)/test?ch ...

  9. 文件的读取与保存(try-with-resource优雅关闭)

    借鉴:https://www.cnblogs.com/itZhy/p/7636615.html 一.背景 在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必须在这些外部资 ...

随机推荐

  1. 基于DRV8701的电机驱动设计

    栅极驱动芯片DRV8701使用的一些注意事项

  2. UVA10382喷水装置

    题意:       给你一个矩形的空地,然后有一些圆形的喷水装置,每个装置的圆心都在矩形宽的中间位置,然偶给你每个矩形的圆心位置和半径,问你最少多少个喷水装置可以把矩形的所有编辑都覆盖上. 思路:   ...

  3. UVA11419 我是SAM

    题意:      给你一个n*m的矩阵,上面有一些格子上有目标,我们可以在格子的外面用枪打目标,一发子弹可以消灭一行或者一列目标,问你最少多少枪能把目标打光,并且输出开枪的位置,题目没说spj(特判) ...

  4. YII框架安装步骤(yii框架版本1.1.20,时间是2018/11)

    0x01 首先中文官网下载https://www.yiichina.com/download 0x02 解压压缩包到www目录下(方便以后调试) 0x02-1 如果想看一下你的电脑是否能匹配yii框架 ...

  5. <JVM下篇:性能监控与调优篇>05-分析GC日志

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  6. HellowWorld详解

    1.随便新建一个文件夹,存放代码 2.在文件夹中新建一个Java文件 新建一个.txt文本文档-->将扩展名.txt修改为.java 注:如果创建的文本文档没有显示扩展名,则有如下方法: 方法一 ...

  7. Masm32sdk安装指南

    上一年学习win32汇编时用的masm32sdk不是最新版本的.因为最近准备继续学习win32汇编,所以准备安装最新的masm32sdk软件包.其中遇到了一些问题,从网上找了2个小时才搞定(宝宝心里苦 ...

  8. 从 demo 到生产 - 手把手写出实战需求的 Flink 广播程序

    Flink 广播变量在实时处理程序中扮演着很重要的角色,适当的使用广播变量会大大提升程序处理效率. 本文从简单的 demo 场景出发,引入生产中实际的需求并提出思路与部分示例代码,应对一般需求应该没有 ...

  9. CentOS7 / CentOS8 设置终端屏幕分辨率

    Centos7 修改文件 /boot/grub2/grub.cfg 搜索 linux16 / /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=881ac4e6-4a5 ...

  10. CPU 使用率 100% 怎么办

    CPU 使用率 100% 怎么办 独家号 码上实战 作者 flyhero原文链接 工作中遇到CPU使用率100%,不要慌,一起来找出原因并fix掉它. 记住这里大致流程,当线上突然遇到时,也不必手足无 ...