【问题标题】:How to save Quartz executed jobs?如何保存 Quartz 执行的作业?
【发布时间】:2014-09-02 13:46:46
【问题描述】:

一个问题,执行jobs后,quartz会从数据库qrtz_triggers表中删除jobs,但在特定情况下需要重复job,但失败了。

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

谢谢

【问题讨论】:

  • 如果您的作业失败,您可以决定让您的作业可恢复或在您的作业中,一旦失败,您可以访问调度程序以重新安排您的作业。

标签: java jboss quartz-scheduler


【解决方案1】:

如果您使用JDBCJobStore,则您的作业存储在QRTZ_JOB_DETAILS 之类的表中,您的简单触发器存储在QRTZ_SIMPLE_TRIGGERS 中,您的cron 触发器存储在QRTZ_CRON_TRIGGERS 中,所有触发器都存储在在QRTZ_TRIGGERS

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

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

希望对你有帮助。

【讨论】:

    【解决方案2】:

    这正是持久标志的用途。即使没有与作业关联的触发器,持久作业仍会在 Quartz 中注册。另一方面,在没有关联触发器的情况下(例如,在所有关联触发器被触发并被 Quartz 删除之后),Quartz 会自动删除非持久作业。

    详情可以参考JobDetailImpl javadoc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      相关资源
      最近更新 更多