1
我想写一个简单的程序,它在特定的日期时间运行相同的作业,输入文件中的日期时间列表,这里是我的代码:具有特定开始时间的石英单个作业多重触发器不起作用
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
Map<JobDetail, List<Trigger>> jobAndTriggers = new HashMap<JobDetail, List<Trigger>>();
List<Trigger> triggers = new ArrayList<Trigger>();
JobDetail jobDetail = newJob (TestJob.class)
.withIdentity(Constants.TEST_JOB_PREFIX, onstants.TEST_JOB_GRUOP_PREFIX)
.build();
Trigger trigger = null;
int triggerIndex = 1;
for (Date date : dates) {
trigger = newTrigger()
.withIdentity(Constants.SIMPLE_TRIGGER_PREFIX + triggerIndex, Constants.SIMPLE_TRIGGER_GROUP_PREFIX)
.startAt(date)
.withSchedule(simpleSchedule().withRepeatCount(0))
.build();
triggers.add(trigger);
}
jobAndTriggers.put(jobDetail, triggers);
sched.scheduleJobs (jobAndTriggers, true);
现在,当程序运行时,说当我通过之日起次类似的列表: 2013年3月13日12时21分33秒| 2013-03-13 12:21:37 | 2013-03-13 12:22:41 | 2013-03-13 12:22:45 | 2013-03-13 12:23:49 |
这项工作只会被解雇一次,这是最后一次的时间戳,我不知道我做错了什么,任何帮助表示赞赏。以下是一些程序日志:
12:19:33.265 [main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
12:19:33.265 [main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.1.7
12:19:33.265 [main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
12:19:33.265 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers
12:19:33.265 [main] DEBUG c.s.r.s.s.TriggerAndJobBuilder - Triggers created:
12:19:33.265 [main] DEBUG c.s.r.s.s.TriggerAndJobBuilder - SIMPLE_TRIGGER_GROUP.SIMPLE_TRIGGER1 which will fire job at 2013-03-13 12:21:33
12:19:33.265 [main] DEBUG c.s.r.s.s.TriggerAndJobBuilder - SIMPLE_TRIGGER_GROUP.SIMPLE_TRIGGER1 which will fire job at 2013-03-13 12:21:37
12:19:33.265 [main] DEBUG c.s.r.s.s.TriggerAndJobBuilder - SIMPLE_TRIGGER_GROUP.SIMPLE_TRIGGER1 which will fire job at 2013-03-13 12:22:41
12:19:33.265 [main] DEBUG c.s.r.s.s.TriggerAndJobBuilder - SIMPLE_TRIGGER_GROUP.SIMPLE_TRIGGER1 which will fire job at 2013-03-13 12:22:45
12:19:33.265 [main] DEBUG c.s.r.s.s.TriggerAndJobBuilder - SIMPLE_TRIGGER_GROUP.SIMPLE_TRIGGER1 which will fire job at 2013-03-13 12:23:49
12:19:33.265 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
12:19:34.109 [Timer-0] DEBUG org.quartz.utils.UpdateChecker - Checking for available updated version of Quartz...
12:19:34.265 [Timer-1] DEBUG org.quartz.utils.UpdateChecker - Checking for available updated version of Quartz...
12:19:49.265 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.q.simpl.PropertySettingJobFactory - Producing instance of Job 'TEST_GROUP.TEST_PING_JOB', class=com.test.TestJob
12:19:49.265 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers
12:23:49.265 [DefaultQuartzScheduler_Worker-1] DEBUG org.quartz.core.JobRunShell - Calling execute on job TEST_GROUP.TEST_PING_JOB
12:23:49.265 [DefaultQuartzScheduler_Worker-1] INFO c.s.r.s.s.TestJob - Entered TestJob execute method at 2013-03-13 12:23:49
问题修复。我忘了增加作为触发器标识符一部分的变量triggerIndex。所以基本上我分配了具有相同身份的“多个”触发器,并且Quartz用新设置覆盖“旧”触发器。 – Jiansen 2013-03-14 13:47:05