【发布时间】:2018-01-23 18:12:38
【问题描述】:
我们有一个基于 SQL 的石英调度程序。有一个作业处理 100k 条记录并运行 2 小时。如果在作业仍在运行的情况下启动服务器关闭,那么在服务器重新启动后作业是否会再次启动?
【问题讨论】:
标签: quartz-scheduler
我们有一个基于 SQL 的石英调度程序。有一个作业处理 100k 条记录并运行 2 小时。如果在作业仍在运行的情况下启动服务器关闭,那么在服务器重新启动后作业是否会再次启动?
【问题讨论】:
标签: quartz-scheduler
检查
RequestsRecovery - 如果一个作业“请求恢复”,并且它在调度程序“硬关闭”期间执行(即它在崩溃中运行的进程,或者机器关闭),那么当调度器再次启动时,它会重新执行。在这种情况下,JobExecutionContext.isRecovering() 方法将返回 true。
只要您有 JDBCData 存储,这将起作用。
【讨论】:
当您使用 JDBC 配置属性创建调度程序工厂时,您需要存储调度程序详细信息 JDBC JobStore。
之后,您可以从元数据中提取它,并根据故障时间检索您的调度程序详细信息并根据您的要求恢复它。
请参考:-Quartz Scheduler using JDBC JobStore
另一种方法是您可以创建自己的调度程序侦听器并将其分配给调度程序。参考:-https://examples.javacodegeeks.com/enterprise-java/quartz/quartz-scheduler-tutorial/
【讨论】: