在我的项目中,我正在创建一个立即 SimpleTrigger 来调用虚拟作业(执行持续超过 30 秒的操作)。我已将失火策略设置为 MISFIRE_INSTRUCTION_FIRE_NOW 并且作业请求恢复标志也设置为 true。
作业启动后(Quartz DB 存储中的状态从 READY 转换为 RUNNING),我故意反弹(重新启动)整个系统,这会中断正在运行的作业。当系统回到活动状态时,我看到中断的作业根本不会重新启动。
在我们的生产系统中,这会造成严重伤害,因为任何软件更新都会无意中最终中断该实例正在运行的作业,并且这些作业根本不会再次启动(一项关键的一次性作业将未完成,从而在即将到来的系统中造成不良的连锁反应)工作)。从我们的角度来看,这是非常不受欢迎的。
我想要的是被中断的作业在系统再次备份后也会触发(本质上相同的行为是触发计划时间是在系统停机期间并且策略是 MISFIRE_INSTRUCTION_FIRE_NOW)。这里有解决方法吗?
为此,您必须使用 Java 和 Quartz 2.X 中的 requestRecovey 选项配置作业:
JobDetail jd = newJob(job).withIdentity(name, group) //
.requestRecovery()// ask scheduler to re-execute this job
.build(); // if it was in progress when the scheduler went down...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3021 次 |
| 最近记录: |