可以在石英中使用不同的触发器运行相同的工作吗?

时间:2014-12-01 13:30:27

标签: java quartz-scheduler

我使用以下代码创建多个触发器,然后将所有这些触发器绑定到一个作业。但它失败了

 "org.quartz.ObjectAlreadyExistsException: Unable to store Job : 'Group.Job', because one already exists with this identification.
"


 for (SchedulerBean schedulerBean : schedulerList) {
            Trigger trigger = newTrigger()
                    .withIdentity("trigger_" + schedulerBean.getConnectorID())
                    .usingJobData("ID", schedulerBean.getConnectorID())
                    .withSchedule(cronSchedule(schedulerBean.crontab))
                    .forJob(job)
                    .build();
            sched.scheduleJob(job, trigger);
        }
  sched.start();

1 个答案:

答案 0 :(得分:3)

从错误中我怀疑sched.scheduleJob(job, trigger);部分尝试多次安排相同的工作。

尝试在for循环之前添加sched.addJob(job, true);以仅添加一次('true'用于替换旧作业,如果存在),并在循环内部使用 sched.scheduleJob(trigger);代替sched.scheduleJob(job, trigger);

sched.scheduleJob(trigger);能够将触发器添加到作业中,因为您使用.forJob(job)属性

指定了它