服务器关闭时,当前正在运行的石英工作会发生什么
问题描述:
我们有一个基于SQL的石英调度器。有一份工作处理10万条记录并运行2个小时。如果在作业仍在运行时启动了服务器关闭,那么在服务器重新启动后作业会再次启动吗?服务器关闭时,当前正在运行的石英工作会发生什么
答
检查
RequestsRecovery - 如果作业“要求恢复”,它是在调度的“硬关闭”的时间执行(即它崩溃内运行的过程中,或在机器关闭关闭),然后在调度程序再次启动时重新执行。在这种情况下,JobExecutionContext.isRecovering()方法将返回true。
只要你有JDBCData存储,这将工作。
答
当您使用JDBC配置属性创建调度器工厂时,您需要存储调度程序详细信息JDBC JobStore。
之后,您可以从元数据中提取它,并根据失败时间检索您的调度程序详细信息,并根据您的要求恢复它。
请参考: - Quartz Scheduler using JDBC JobStore
还有一个替代的方式是,你可以创建自己的调度器监听,并将其分配给调度。参考: - https://examples.javacodegeeks.com/enterprise-java/quartz/quartz-scheduler-tutorial/
谢谢。那么如果Quartz作业完成一半并发出了服务器关闭命令,会发生什么?关机过程是否会等待quart作业完成? – Suneel