是否有人尝试并行启动Quartz Job应用程序,其中应用程序在多台计算机上运行?
我在我的应用程序中创建了Quartz Clustered job,它在多台机器上运行。 当我开始应用程序时,Quartz工作正常,在所有主机中逐个启动。但是,当我并行启动应用程序时,我会遇到一些不同的错误。
如:
作业和触发器的注册失败:null org.quartz.ObjectAlreadyExistsException:无法存储名称为Trigger的触发器:'triggerName'和group:'JOB_GROUP',因为已存在此标识
ORA-02292:违反完整性约束(QUARTZ_CRON_TRIG_TO_TRIG_FK) - 找到子记录
有没有人遇到过这个问题并得到解决? 你能否分享一下你对这个主题的想法?
答案 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;