我们需要通过只访问数据库来监控石英作业的状态。石英是否提供了实现这一目标的方法?
阅读文档,在Trigger类中我们有TriggerState,它定义了各种状态,ERROR和COMPLETE等。
但是在常规执行期间,CompleteExecutionInstruction始终是NOOP。如果我抛出异常或完全执行它并不重要。如果我成功的话,我期待像COMPLETE这样的东西,如果我抛出异常,我期待错误。
有没有人有这方面的经验?
答案 0 :(得分:2)
触发状态决不会反映作业的上次执行状态,因此您不能指望触发状态为COMPLETE或ERROR。
如果您想监控您的工作,我建议您查看Quartz JobListener界面。此接口允许您拦截和处理您可能感兴趣的所有作业执行事件。例如,您可能希望实现将截获的作业执行事件存储在数据库中的作业侦听器,然后您可以查询此数据库以获取你工作的最后一份工作执行状态等。
您也可以考虑使用现有的Quartz调度程序,作业和触发器管理和监视工具。我是QuartzDesk的原作者,这是这些工具之一。 QuartzDesk是一个完全非侵入式工具,不需要您以任何方式修改应用程序代码,它可以适用于所有类型的Java应用程序和几乎所有Quartz版本。您可以注册public online demo,如果该工具满足您的要求,请尝试自己查看。在监控方面,QuartzDesk GUI在每个作业和触发器旁边显示一个所谓的健康指示器。此指示器描述了最近10个作业/触发器执行的状态(成功,错误,否决),因此您可以快速查看是否有最近失败的作业等。您还可以访问各个作业和触发器的完整执行历史记录。如果您希望收到任何与作业执行相关的事件的通知,您可以创建一个执行通知规则,当配置的条件为时,它将向您发送通知消息(IM,SMS,电子邮件,Slack,HipChat,SNMP陷阱......)满足。我附上了GUI的屏幕截图,显示了作业健康指标和所选作业的执行历史。