如何保存Quartz执行的工作?

时间:2014-09-02 13:46:46

标签: java jboss quartz-scheduler

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

执行???

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

由于

2 个答案:

答案 0 :(得分:4)

如果您使用的是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();

希望它有所帮助。

答案 1 :(得分:3)

这正是持久旗帜的用途。即使没有与工作相关的触发器,Quartz中仍然会记录持久的工作。另一方面,Quartz会自动删除非持久性作业,其中没有关联的触发器(例如,在触发所有关联的触发器并且已被Quartz删除之后)。

有关详情,请参阅JobDetailImpl javadoc