【问题标题】:Quartz Clustered job - multiple hosts - Parallel StartupQuartz 集群作业 - 多台主机 - 并行启动
【发布时间】:2015-10-21 07:01:45
【问题描述】:

有没有人尝试在应用程序在多台机器上运行的情况下并行启动 Quartz Job 应用程序?

我在我的应用程序中创建了 Quartz Clustered 作业,该作业在多台机器上运行。 当我按顺序启动应用程序时,Quartz 工作正常,在所有主机中一个接一个。但是,当我并行启动应用程序时,我遇到了几种不同类型的错误。

如:

  1. 作业和触发器注册失败:null org.quartz.ObjectAlreadyExistsException:无法存储名称为“triggerName”和组:“JOB_GROUP”的触发器,因为已存在具有此标识的触发器

  2. ORA-02292:违反完整性约束 (QUARTZ_CRON_TRIG_TO_TRIG_FK) - 找到子记录

有没有人遇到过这个问题并解决了? 您能否分享您对这个主题的看法?

【问题讨论】:

    标签: quartz-scheduler


    【解决方案1】:

    这个问题来了,因为我创建了具有以下属性的 SchedulerFactoryBean。

    -- SchedulerFactoryBean.setOverwirteExistingJobs(true)

    在并行启动所有实例时,所有实例都试图删除 Quartz_JOB_DETAILS 和 Quartz_TRIGGERS 表值。以上述错误结尾。

    但是,一旦我使用默认值“overwriteExisitingJobs 为 false”。这个问题已经消失了。

    我面临的唯一问题是,每次如果我更改 cron 触发器值,我都会从数据库中删除 JOB 信息,它将在启动第一个调度程序实例时重新创建。

    delete from QRTZ_CRON_TRIGGERS;
    delete from QRTZ_TRIGGERS;
    delete from QRTZ_JOB_DETAILS;
    delete from QRTZ_LOCKS;
    commit;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      相关资源
      最近更新 更多