2016-06-07 25 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