【问题标题】:what happens to a currently running quartz job when server is shutdown服务器关闭时当前正在运行的石英作业会发生什么
【发布时间】:2018-01-23 18:12:38
【问题描述】:

我们有一个基于 SQL 的石英调度程序。有一个作业处理 100k 条记录并运行 2 小时。如果在作业仍在运行的情况下启动服务器关闭,那么在服务器重新启动后作业是否会再次启动?

【问题讨论】:

    标签: quartz-scheduler


    【解决方案1】:

    检查

    RequestsRecovery - 如果一个作业“请求恢复”,并且它在调度程序“硬关闭”期间执行(即它在崩溃中运行的进程,或者机器关闭),那么当调度器再次启动时,它会重新执行。在这种情况下,JobExecutionContext.isRecovering() 方法将返回 true。

    只要您有 JDBCData 存储,这将起作用。

    【讨论】:

    • 谢谢。那么如果 Quartz 作业完成一半,并且发出了服务器关闭命令,会发生什么?关闭过程会等待 quart 作业完成吗?
    【解决方案2】:

    当您使用 JDBC 配置属性创建调度程序工厂时,您需要存储调度程序详细信息 JDBC JobStore。

    之后,您可以从元数据中提取它,并根据故障时间检索您的调度程序详细信息并根据您的要求恢复它。

    请参考:-Quartz Scheduler using JDBC JobStore

    另一种方法是您可以创建自己的调度程序侦听器并将其分配给调度程序。参考:-https://examples.javacodegeeks.com/enterprise-java/quartz/quartz-scheduler-tutorial/

    【讨论】:

      猜你喜欢
      • 2011-11-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多