服务器关闭时,当前正在运行的石英工作会发生什么

问题描述:

我们有一个基于SQL的石英调度器。有一份工作处理10万条记录并运行2个小时。如果在作业仍在运行时启动了服务器关闭,那么在服务器重新启动后作业会再次启动吗?服务器关闭时,当前正在运行的石英工作会发生什么

检查

RequestsRecovery - 如果作业“要求恢复”,它是在调度的“硬关闭”的时间执行(即它崩溃内运行的过程中,或在机器关闭关闭),然后在调度程序再次启动时重新执行。在这种情况下,JobExecutionContext.isRecovering()方法将返回true。

只要你有JDBCData存储,这将工作。

+0

谢谢。那么如果Quartz作业完成一半并发出了服务器关闭命令,会发生什么?关机过程是否会等待quart作业完成? – Suneel

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

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

请参考: - Quartz Scheduler using JDBC JobStore

还有一个替代的方式是,你可以创建自己的调度器监听,并将其分配给调度。参考: - https://examples.javacodegeeks.com/enterprise-java/quartz/quartz-scheduler-tutorial/