2012-07-10 36 views
0

我有一個工作,運行每小時的第一分鐘。問題當使用石英withMisfireHandlingInstructionIgnoreMisfires

作業將獲得當前小時並查詢數據庫以查看此小時內要發送的任何通知(如果有),它將發送電子郵件通知。

現在的問題是處理失誤。

說當調度程序在8:30 AM - 10:30 AM之間停機時,我錯過了2個觸發器。 當調度程序在10:30出現時,我需要這2個錯過的觸發器被解僱。因此,我正在使用具有MisfireHandlingInstructionIgnoreMisfires觸發器的石英。

由於我的工作有根據當天的當前小時,其查詢的邏輯,既缺火觸發器將查詢通知發送僅上午10時(上午8點不和上午9時)

我將如何處理這種情況?

石英有無論如何檢查工作內失火計數?

感謝您的幫助!

回答

3

在你的情況,而不是依賴於當前系統日期,你應該得到預定的日期:

void execute(JobExecutionContext context) { 
    context.getScheduledFireTime() 
    //... 
} 

通常當前系統時間應該是非常接近預定的發射時間。但是在失火情況或重負荷情況下,預定火災時間是在當前時間之前(我們遇到延誤)。

準確地說,在您的情況下,在10:30時,作業將觸發兩次,getScheduledFireTime()將返回9:00和10:00。

+0

謝謝!托馬斯。這正是我想要的 – 2012-11-01 17:03:56