2016-06-07 26 views
0

我們有一個Java應用程序(ESB)信息使用石英2.2.1和我們用它來安排數百名用戶的工作。Quartz調度管理:關於發揮失常觸發器

我想在我爲我們的用戶的應用程序創建監控頁面(或調度管理頁面),使他們能夠或者是否石英調度運行良好有任何問題這個組件。

石英是否爲此提供任何監測API?任何人都可以告訴我們,根據您的經驗,我們應該在這個監控(或管理)頁面中顯示所有數據點?我可以想到的一些要點:

  1. 計劃程序狀態(正在運行|已暫停|關閉)。
  2. 使用「上一次啓動時間」和「下一個FireTime」信息運行的作業數量。
  3. 線程池實現及其大小。
  4. JDBCJobStore配置詳細信息。

是否有一種方式來顯示有關觸發器中發揮失常的信息?我沒有看到任何API爲我提供關於失誤觸發器的信息。任何人都可以告訴我如何從調度程序獲取這些信息嗎?

在這方面的任何幫助將不勝感激。

回答

2

您於此而得名許多不同的問題

調度狀態(1):

Scheduler sched =... 
sched.isInStandbyMode(); 
sched.isStarted(); 
sched.isShutdown(); 

與正在運行的作業數(2)見here

Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 

    for (String groupName : scheduler.getJobGroupNames()) { 

    for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) { 

     String jobName = jobKey.getName(); 
     String jobGroup = jobKey.getGroup(); 

     //get job's trigger 
     List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey); 
     Date nextFireTime = triggers.get(0).getNextFireTime(); 

     System.out.println("[jobName] : " + jobName + " [groupName] : " 
      + jobGroup + " - " + nextFireTime); 

     } 

    } 

線程池實現和其尺寸。(3)

Scheduler sched =... 
sched.getMetaData().getThreadPoolClass() 
sched.getMetaData().getThreadPoolSize() 

至於,你可以使用listeners,具體TriggerListener.html#triggerMisfired可以對你有所幫助「即是發揮失常觸發器」。

+0

即使將觸發器設置爲忽略失火指令,TriggerListener.html#triggerMisfired是否也會被調用? – Aman

+0

我已經試過了,但是從石英的代碼,它似乎是對'RAMJobStore'它不會被調用的'MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY',但'JDBCJobStore'這是你的情況,似乎它會被調用。請更新以防萬一它無法使用。 – yishaiz

+0

另請注意,這可能對您的監控目的有用,此[Logging Trigger History Plugin](http://www.quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigPlugins.html)。 – yishaiz