2013-04-05 55 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