springBoot+actuator 实现优雅的停止服务器

  • 前言
    • 正文

前言

最新使用了springboot框架作为web应用开发,目前已经上生产环境,但是对了每周的代码更新是痛苦的,更加可怕的是之前没有处理好停止服务器的方式,导致更新代码之后偶尔会有一些用户反馈有问题,上去排查大多数结果都是数据丢失造成的,这就迎来了领导的一句话“以后停止服务器的方式做得优雅一点”。
注:

springboot - version: 2.1.0.RELEASE

正文

1.依赖
maven 项目 在 pom.xml 文件中加入 actuator 的依赖:

<!-- springboot监控 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

2.配置
springboot配置文件 application.yml 添加如下配置:

management:endpoint:shutdown:enabled: trueendpoints:web:exposure:include: "*"

management.endpoint.shutdown.enabled 这是说是否启动/shutdown端点,默认是false,
management.endpoints.web.exposure.include 这是公开所有端点
我做的时候在网上找了很多,有的说只要设置了 management.endpoint.shutdown.enabled 就是可以使用了,也有的说只要配置了 management.endpoints.web.exposure.include = '*' 也是可以用了,不知道是不是我的版本比较新,我单独配置其中的一个都是无法生效的,都是报 ‘404’ 错误,本人代码只有在配置文件同时配置了才能生效。

3.访问
按以上配置完成后,启动服务器,执行 http://localhost:8071/actuator/shutdown 返回成功标识,如下图:

4.测试
首先我写了一个控制器和一个方法,方法里面休眠了 1分钟 ,代码如下:

@RestController
@RequestMapping("/test")
public class TestController extends BasePortalController {@PostMapping("/shutdown-server")public String shutdownServer() {try {Thread.sleep(60 * 1000);} catch (InterruptedException e) {e.printStackTrace();}logger.info("终于可以了,哈哈哈哈哈哈哈");return "success";}
}

访问的路径 http://localhost:8080/test/shutdown-server 请求成功并且等待休眠过后返回 ‘success’。
首先执行 http://localhost:8080/test/shutdown-server 测试接口,紧接着执行 http://localhost:8071/actuator/shutdown 停止服务器,然后发现服务器是可以停止的,查看日记可以打印出 “终于可以了,哈哈哈哈哈哈哈”,这就表示springboot已经可以优雅的关闭了,至少服务器程序已经执行完了。

5.问题
当调用 http://localhost:8080/test/shutdown-server 后未调用 http://localhost:8071/actuator/shutdown ,等待休眠后返回 ‘success’,
当调用 http://localhost:8080/test/shutdown-server 后调用 http://localhost:8071/actuator/shutdown 你就会发现,你需要的 ‘success’ 是不会返回了,效果如图:

虽然说上面的截图报错是可以理解的,但是本人总觉得老是缺了点那么意思,如果调用shutdown后能应该有的结果给到用户,那么才是最完整的,毕竟有一些项目是做API开发的,如果优雅的停掉之后没有结果返回,虽然线程是执行完了,但是用户拿不到相对应的结果,那么用户的数据就不会得到更新,最终可能就会造成用户数据和我方数据对不上的问题。
如果还有那么大神有更好的处理方式,欢迎告知,谢谢。

springBoot+actuator 实现优雅的停止服务器相关推荐

  1. Netty实战:Springboot+Netty+websocket优雅的高性能服务器 (附源码下载)

    Springboot-cli 开发脚手架系列 Netty系列:Springboot+Netty优雅的开发websocket高性能服务器 文章目录 Springboot-cli 开发脚手架系列 前言 1 ...

  2. java spring 服务器关闭_通过springboot怎么停止服务器??

    智慧大石 可以以通过HTTP发送shutdown信号的方式停止服务器.具体步骤如下:1. 在pom.xml中引入actuator依赖   org.springframework.boot spring ...

  3. springboot 启动 退出_springboot怎么停止掉服务器 我启动了springboot,但是我修改了程序,我怎么重启啊...

    展开全部 可以以通过HTTP发送shutdown信号的方式停止服务器. 具体步骤如下: 1. 在pom.xml中引入actuator依赖e68a8462616964757a686964616f3133 ...

  4. SpringBoot + Actuator 应用监控

    SpringBoot + Actuator 应用监控 Spring Boot Actuator Actuator支持的端点信息 Actuator应用监控配置 示例 Actuator 监控信息可视化 S ...

  5. springBoot如何实现优雅停机

    最近发现springboot内嵌的tomcat居然不支持优雅停机,一行kill - 15命令,会导致tomcat请求处理到一半就直接停止服务了.这简直是场灾难. 那么我们要怎么实现优雅停机呢,别慌,很 ...

  6. Android Retrofit+RxJava 优雅的处理服务器返回异常、错误

    Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 参考文章: (1)Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 (2)https:// ...

  7. SpringBoot Actuator监控【转】

    springboot actuator 监控 springboot1.5和springboot2.0 的actuator在启动日志上的差异就很大了. springboot1.5在启动时会打印很多/XX ...

  8. 转: Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

    转自: Springboot - 用更优雅的方式发HTTP请求(RestTemplate详解) - Java知音号 - 博客园RestTemplate是Spring提供的用于访问Rest服务的客户端, ...

  9. 线程停止继续_晓龙吊打面试官系列: 如何优雅的停止一个线程

    一.什么时候我们需要中断一个线程 在实际的开发中,有很多场景需要我们中断一个正在运行的线程,就比如: 当我们使用抢票软件时,其中某一个通道已经抢到了火车票,这个时候我们就需要通知其他线程停止工作. 当 ...

最新文章

  1. 平衡二叉树-FHQ Treap(无旋平衡树)c/c++代码实现
  2. 运行时异常与一般异常区别
  3. Java智慧社区商业级别项目源码,拿来学习真不错
  4. 程序包android.support.annotation不存在_我不知道我不了解的Redis知识
  5. java 中 image 和 byte[] 相互转换
  6. 在Ubuntu 18.04系统中使用Netplan工具配置网络
  7. 都在发5G手机,现在买4G手机还合算吗?
  8. oracle sql分析 cost,Oracle SQL的优化技巧详解
  9. C#基础11.2:单例设计模式
  10. 5. Mac phpstorm 快捷键
  11. 知乎高赞回答!财务小白快速上手报表分析(内含公式+模板)
  12. Navicat Premium 11.2.7 中文破解版安装
  13. 十三、Linux驱动之触摸屏驱动
  14. 心得体会计算机辅助设计实训,cad实训的心得体会模板
  15. 古风宣纸背景教学课件讲座PPT模板
  16. Ansys2020r2 提示The requested data is not available.The ETABLE command is ignored
  17. 网络编程中,同步传输和异步传输有什么区别
  18. Android学习:Service自问自答
  19. C++:从入门到放弃[1]基础知识
  20. Java关于身份证验证的实现

热门文章

  1. 数商云:聚焦供应链布局,新能源汽车企业重塑产业核心竞争力
  2. 不止是贵,iPhoneXS的大杀器A12 Bionic透露了苹果正在布的“一盘棋”
  3. cascade down_cascade down是什么意思
  4. WIN10 系统,笔记本电脑显示 “未检测到摄像头”
  5. QT4程序在QT5环境编译运行
  6. 红旗7.0 rc1 版多媒体解决方案(用Realplay 11)
  7. 微软Surface叫板苹果iPad的六大优势
  8. gradle构建web项目_25多个Web资源可帮助您构建项目
  9. Flume 自定义 Sink
  10. 灾难日:中国互联网惨遭Struts2高危漏洞摧残