即使repeatInterval在一段时间之后,Quartz SimpleTrigger事件也会立即触发

时间:2013-04-05 16:38:22

标签: java quartz-scheduler

我定义了一个simpleTrigger。 repeatInterval是10秒。

我注意到在某种情况下,在一次事件发生后,它立即发射了另一个事件(不是10秒后),第三次甚至在10秒后发射。

对发生的事情有什么想法,以及如何纠正这种行为? 我不知道它是否是一个错误的情况(我没有看到错误),如果它是如何纠正这种行为,我不希望事件在那之后立即被触发。

运行程序时,我看到作业的触发时间为1365178800586毫秒。

然后在1365178800593毫秒被解雇,即大约在同一时间。

随后以1365178810583毫秒发射,即在第一次通话后约10秒发射。

Java code snippet:

String testJobname = "testJob";
JobDetail testJobDetail = new JobDetail();
testJobDetail.setGroup(this.getClass().getName());
testJobDetail.setName(testJobname);
testJobDetail.setJobClass(TestJob.class);

final JobDataMap data = new JobDataMap();
data.put(CheckLimits.class.getName(), checkLimitsCmd);
testJobDetail.setJobDataMap(data);

Trigger testTrigger = new SimpleTrigger(testJobDetail.getName(),
 testJobDetail.getGroup(), SimpleTrigger.REPEAT_INDEFINITELY,
 10000);

1 个答案:

答案 0 :(得分:1)

首先,我认为您应该使用TriggerBuilder和ScheduleBuilder,而不是直接实例化SimpleTrigger。

Schedule schedule = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).build();
Trigger trigger = TriggerBuilder.newTrigger().forJob(testJobDetail).usingJobData(data).withSchedule(schedule).build();

Quartz文档在Javadoc代码中有一些很好的例子,请查看这些以获取更多信息 - http://quartz-scheduler.org/api/2.0.0/org/quartz/SimpleScheduleBuilder.html