Quartz Scheduler有問題。要實用,你在這裏找到我的單元測試的代碼:即使設置了失火指令,Quartz Scheduler仍然運行缺少觸發器
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.getListenerManager().addSchedulerListener(schedulerTestListener);
Trigger trigger = newTrigger()
.withIdentity(CoreTestConstants.TEST_TRIGGER, CoreTestConstants.TEST_TRIGGER_GROUP)
.withSchedule(simpleSchedule()
.withMisfireHandlingInstructionIgnoreMisfires()
.withIntervalInMilliseconds(1000)
.repeatForever())
.forJob(CoreTestConstants.TEST_JOB, CoreTestConstants.TEST_JOB_GROUP)
.build();
scheduler.scheduleJob(getJobDetail(), trigger);
Thread.sleep(20000L);
scheduler.start();
的問題是,當scheduler.scheduleJob(...)被執行我承認,任務沒有立即然而,當開始scheduler.start()被執行我看到20個任務正在被立即執行。
我的意思是,通常我腦子裏的任務不應該被記錄或者直到scheduler.start()被執行纔開始。但是,不管怎樣,石英系統甚至在scheduler.start()未執行之前就保持任務的狀態,然後當scheduler.start()調用缺少的任務時立即觸發執行。
這裏日誌:
09:32:45,005 INFO StdSchedulerFactory:1310 - Quartz scheduler version: 2.1.5
09:32:51,013 INFO SchedulerTest:47 - [test] Scheduler starting..
09:32:51,014 INFO QuartzScheduler:534 - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
*** [TIMER-TEST] 2012-10-10 09:32:51/Test task is executed. Count: 1/1349850771037
*** [TIMER-TEST] 2012-10-10 09:32:51/Test task is executed. Count: 2/1349850771040
*** [TIMER-TEST] 2012-10-10 09:32:51/Test task is executed. Count: 3/1349850771040
*** [TIMER-TEST] 2012-10-10 09:32:51/Test task is executed. Count: 4/1349850771041
*** [TIMER-TEST] 2012-10-10 09:32:51/Test task is executed. Count: 5/1349850771042
*** [TIMER-TEST] 2012-10-10 09:32:51/Test task is executed. Count: 6/1349850771043
*** [TIMER-TEST] 2012-10-10 09:32:51/Test task is executed. Count: 7/1349850771044
正如你所看到的,即使我設置觸發以1秒的時間間隔來執行,它的線程睡眠期間執行的缺失任務。
我試圖玩弄失火指令,但它沒有意義,它不會改變我的情況下的代碼行爲。
任何幫助,將不勝感激。提前致謝。
你可以給石英和彈簧的依賴關係嗎? – sgpalit
石英2.1.5 spring 3.1.0.RELEASE – Javatar