项目版本迭代难免需要重启应用,比较粗暴的方法是kill -9 pid,这种方式是直接通过操作系统命令杀死进程,用户未完成的请求也会被丢失掉,尤其是我们的应用中有队列任务的,要是队列中的任务没有持久化,那就全丢了。

这里通过关闭spring上下文的方式来优雅停机;

1:首先新增一个get方式的接口:

@GetMapping(path = "/shutDown")public JsonResult shutDownApi(@RequestParam(name = "token") String token){if ("111111111".equals(token)){ConfigurableApplicationContext context = (ConfigurableApplicationContext) SpringUtil.getApplicationContext();context.close();return JsonResult.createSuccess("ok");} else {return JsonResult.createFail("invalid token");}}

ConfigurableApplicationContext 是spring启动的上下文环境,我们在springboot的启动类的main方法保留他的引用:

在linux中直接通过curl -v "http://host:port/api/shutDown?token=111111111"请求关机接口来实现安全地关闭应用。

springboot优雅停机相关推荐

  1. SpringBoot 优雅停机

    目录 linux常用的 kill 指令 springboot 优雅停机 /actuator/shutdown 端点 不停机更新方案 linux常用的 kill 指令 kill -15:kill指令默认 ...

  2. springboot 优雅停机_SpringBoot 优雅停止服务的几种方法 第309篇

    相关历史文章(阅读本文之前,您可能需要先看下之前的系列?) 国内最全的Spring Boot系列之三 一分钟get:缓存穿透.缓存击穿.缓存雪崩 - 第304篇 布隆过滤器Bloom Filter竟然 ...

  3. springboot 优雅停机_Spring boot 2.3优雅下线,距离生产还有多远?

    简介:对于任何一个线上应用,如何在服务更新部署过程中保证业务无感知是开发者必须要解决的问题,即从应用停止到重启恢复服务这个阶段不能影响正常的业务请求,这使得无损下线成为应用生命周期中必不可少的一个环节 ...

  4. 结合JUC谈Springboot优雅停机

    废话少说 springboot的优雅停机是借助于ShutdownHook回调实现的(网上文章都说烂了). 在执行hook流程时,spring借助CountDownLatch阻塞线程达到在一定时间内不退 ...

  5. springboot 优雅停机_Spring Boot 2.3 新特性优雅停机详解

    什么是优雅停机 先来一段简单的代码,如下: @RestControllerpublic class DemoController { @GetMapping("/demo") pu ...

  6. springboot 优雅停机_新姿势,Spring Boot 2.3.0 如何优雅停机?

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 来源 | https://urlify.cn/mu22If 先来一段简单的代码,如下: @RestControllerpub ...

  7. SpringBoot在K8s下实现优雅停机

    在K8s中,当我们实现滚动升级之前,务必要实现应用级别的优雅停机.否则滚动升级时,还是会影响到业务.本文介绍SpringBoot应用实现优雅停机.此次教程基于SpringBoot 2.5.0. 1. ...

  8. spring 优雅停机

    为什么 spring 要做优雅停机 我们现在的服务一般都是在 spring 容器运行,如果不做优雅停机,会有以下问题 1.程序中的任务运行到一半,被强行结束,影响到正常业务 2.出现 spring 容 ...

  9. SpringBoot 2.3 新特性之优雅停机

    1 SpringBoot 2.3 新特性之优雅停机 什么是优雅停机 先来一段简单的代码,如下: @RestController public class DemoController {@GetMap ...

最新文章

  1. linux 更改父进程名称,[Linux进程]在父进程和子进程中分别修改变量
  2. Spring 2.5新特性及架构图
  3. Python获取代理IP地址
  4. VMware NSX组件构建矩阵
  5. 放弃月薪过万的城市工作,返乡创业做农业,面对未知风险,你敢尝试吗?
  6. 在myql sqlserver 快速找到带有关键字的表
  7. linux grub 删除文件,删除grub的方法(转)
  8. 程序员别再迷茫,赚钱,方法比你想得更多
  9. 常用图像插值算法分析与比较
  10. C# 实现获取网络时间
  11. 远卓:数字化转型的精益化思考
  12. 【21.09-21.10】近日Paper Quichthrough汇总
  13. 离散数据:析取范式与合取范式
  14. Stellarium PC完全移植安卓版0.20.4
  15. 杭电 1242 Rescue
  16. 《历术甲子篇》冬至合朔表
  17. 华为OD机试 - 按身高和体重排队(Java) | 机试题+算法思路+考点+代码解析 【2023】
  18. 多个域名对应一个ip的解决办法
  19. web前端(css3)
  20. springboot2稳定版本_springboot 最新稳定版

热门文章

  1. valgrind 的一个小缺陷
  2. [C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView
  3. 如何去掉域名中的www?
  4. netbeans项目缺少服务器,Netbeans,添加Glassfish服务器“不存在”
  5. class根据状态 vue_系统学习 vue 中使用 css 的各种方式
  6. python矩阵行秩函数_为什么矩阵行秩等于列秩?
  7. mysql服务器权限说明,MySQL用户权限管理详解
  8. 根据mysql生成数据库设计文档,第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(1)...
  9. 今天小暑是什么时间_小暑适合发朋友圈的说说 小暑吐槽天气热的搞笑幽默说说...
  10. 主成分分析计算机如何实现,主成分分析(PCA)原理及R语言实现及分析实例