美文网首页
Spring优雅关闭-找不到数据库连接

Spring优雅关闭-找不到数据库连接

作者: huiwq1990 | 来源:发表于2018-02-08 12:09 被阅读0次

前言

最近上线系统重启时,报了找不到数据库连接的错误,心里万马奔腾。

问题重现

模拟线上问题,使用定时任务向线程池频繁提交数据库操作。


image.png

当应用关闭的时候,发现先把数据库连接关闭,线程池才关闭,所以导致任务执行时失败。


image.png

问题解决

控制容器Bean的关闭顺序

  1. 自己实现ApplicationListener
    2)处理ContextClosedEvent类型事件

关闭顺序:

  1. 先关闭@Scheduler,停止任务提交。
    由于@Scheduler的解析时通过ScheduledAnnotationBeanPostProcessor处理的,可以调用它的close方法实现。
    2)停止系统中的线程池,可以shutdown后等一小会再shutdownNow,等任务执行完成。


    image.png

参考

https://stackoverflow.com/questions/6603051/how-can-i-shutdown-spring-task-executor-scheduler-pools-before-all-other-beans-i

相关文章

网友评论

      本文标题:Spring优雅关闭-找不到数据库连接

      本文链接:https://www.haomeiwen.com/subject/ldfttftx.html