美文网首页
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