2013-04-05 28 views
0

我有一个简单的触发器定义。 repeatInterval是10秒。尽管repeatInterval稍晚一些,石英SimpleTrigger事件立即触发

我注意到在某些情况下,一次事件发射后,它立即发射另一个(不是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); 
+0

你得到一个异常? – 2013-04-05 19:49:53

回答

1

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

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

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