如何保存Quartz执行的作业?

问题描述:

一个问题,在执行作业之后,石英从数据库qrtz_triggers表中删除作业,但在特定情况下需要重复失败的作业。如何保存Quartz执行的作业?

是否有任何配置选项或方法在执行后将作业存储到另一个表中?

谢谢

+0

如果您的工作失败,您可以决定将工作恢复或工作,失败后,您可以访问计划程序以重新计划工作。 – 2014-09-02 18:31:55

如果使用JDBCJobStore,你的作业存储在一个表像QRTZ_JOB_DETAILS,和你简单的触发器都存储在QRTZ_SIMPLE_TRIGGERS,您的cron trigers存储在QRTZ_CRON_TRIGGERS,以及所有触发器都存储在QRTZ_TRIGGERS

如果您希望自己的工作持久耐用,并且在没有触发器与工作关联时仍然存在,则在构建JobDetail时应该致电storeDurably(true)。例如:

JobDetail jobDetail = JobBuilder.newJob() 
    .ofType(DataMapJob.class) 
    .withIdentity("dataJob", "dataJobGroup") 
    .storeDurably(true) 
    .requestRecovery(true) 
    .build(); 

希望它有帮助。

+0

谢谢,它是有用的 – 2014-09-03 16:14:54

这正是持久标志的用途。即使没有与工作相关的触发器,Quartz中也会保留持久的工作。另一方面,Quartz会自动删除非持久作业,因为没有关联的触发器(例如在所有关联的触发器被触发并被Quartz删除后)。

有关详细信息,请参阅JobDetailImpl javadoc

+0

谢谢,这是有益的 – 2014-09-03 16:15:20