0

我定义了一个 simpleTrigger。重复间隔为 10 秒。

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

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

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

然后以 1365178800593 毫秒触发,即大约在同一时间。

随后在 1365178810583 毫秒触发,即在第一次调用后大约 10 秒。

Java代码片段:

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);
4

1 回答 1

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

于 2013-04-05T19:02:41.203 回答