Quartz Clustered job - 多个主机 - 并行启动

时间:2015-10-20 00:20:25

标签: quartz-scheduler

是否有人尝试并行启动Quartz Job应用程序,其中应用程序在多台计算机上运行?

我在我的应用程序中创建了Quartz Clustered job,它在多台机器上运行。 当我开始应用程序时,Quartz工作正常,在所有主机中逐个启动。但是,当我并行启动应用程序时,我会遇到一些不同的错误。

如:

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

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

  3. 有没有人遇到过这个问题并得到解决? 你能否分享一下你对这个主题的想法?

1 个答案:

答案 0 :(得分:0)

出现此问题,因为我使用以下属性创建了SchedulerFactoryBean。

- SchedulerFactoryBean.setOverwirteExistingJobs(true)

在Parallel中启动所有实例时,所有实例都尝试删除Quartz_JOB_DETAILS和Quartz_TRIGGERS表值。以上述错误结束。

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

我遇到的唯一问题是,每次如果我改变了cron触发值,我都会从DB中删除JOB信息,并且会在启动第一个调度程序实例时重新创建它。

delete from QRTZ_CRON_TRIGGERS;
delete from QRTZ_TRIGGERS;
delete from QRTZ_JOB_DETAILS;
delete from QRTZ_LOCKS;
commit;
相关问题