如何监控Quartz是否在正常运行?

最近涉及到Quartz调度,具体有4个任务分别是:每隔2小时,每隔一天,每隔一天,每天18点运行。

现在要求对调度任务监控,“提前知道任务任务是否挂掉”,也就是希望还没运行就希望知道他到底会不会运行 - -

:oops: 有没有啥方法可以做到监控调度是存活?计数器?(计数器看似不行)还是Quartz的其他Api可以做到?

先谢谢!

注: 用的Quartz版本是2.0

quartz框架中T_TASK_TRIGGERS表 TRIGGER_STATE 字段显示任务的属性大概状态有这几种:
WAITING:等待

PAUSED:暂停
ACQUIRED:正常执行
BLOCKED:阻塞
ERROR:错误

org.quartz.Scheduler.getJobNames
可以根据任务组名(一般都用的Scheduler.DEFAULT_GROUP吧)得到当前的所有Job.
然后org.quartz.Scheduler.getJobDetail
根据名称再获取到jobdetail,查看对应的trigger等属性,可以大概知道任务的执行情况.

Quartz的调度器有类似的api可以用:isStarted()、isShutdown()

日志啊

要求做成一个功能,要有界面什么的么?

如果不要的话直接命令行 jstack

  1. 可以通过log的方式来判断,每次执行成功记录信息,这需要你定时去查看log信息。
  2. 可以在任务结束时发送email或短信等,来反映任务是否执行成功,但是这个也麻烦,会不断有email或短信发过来,并且还要确保email和短信服务可用。

预先判断?看看jvm有没有挂

System.out.println("执行quartz");