上一章介绍监控job有三种方案,其实还有一个简单方案是实现quartz的TriggerListener。
上次我也试了这个方案,但是由于操作错误,导致没有监控成功,所以才选择分析源码来实现代理进行监控。
后面我看了些资料,并重新试了下,这种方案是可行的,并且非常方便。
首先实现TriggerListener,如下:
public class MonitorTriggerListener implements TriggerListener { private final static Logger logger=Logger.getLogger(MonitorJobRunShell.class); private ThreadLocal<QuartzLog> localLog=new ThreadLocal<QuartzLog>(); /** * @see org.quartz.TriggerListener#getName() */ @Override public String getName() { return "MonitorTriggerListener"; } /** * @see org.quartz.TriggerListener#triggerComplete(org.quartz.Trigger, org.quartz.JobExecutionContext, int) */ @Override public void triggerComplete(Trigger arg0, JobExecutionContext jec, int arg2) { try { QuartzLog quartzLog=localLog.get(); if(quartzLog==null)return ; quartzLog.setExeTime(jec.getJobRunTime()); getService().update(quartzLog); } catch (Exception e) { logger.error("记录job结束时间异常",e); }catch (Throwable e) { logger.error("记录job结束时间出错",e); } } /** * @see org.quartz.TriggerListener#triggerFired(org.quartz.Trigger, org.quartz.JobExecutionContext) */ @Override public void triggerFired(Trigger arg0, JobExecutionContext jec) { try { JobDetail jobDetail = jec.getJobDetail(); System.out.println(localLog.get()); QuartzLog quartzLog=getService().insert(jobDetail.getName()); localLog.set(quartzLog); System.out.println(quartzLog); } catch (Exception e) { logger.error("记录job开始时间异常",e); }catch (Throwable e) { logger.error("记录job开始时间出错",e); } } /** * @see org.quartz.TriggerListener#triggerMisfired(org.quartz.Trigger) */ @Override public void triggerMisfired(Trigger arg0) { } /** * @see org.quartz.TriggerListener#vetoJobExecution(org.quartz.Trigger, org.quartz.JobExecutionContext) */ @Override public boolean vetoJobExecution(Trigger arg0, JobExecutionContext arg1) { return false; } private QuartzLogService getService(){ return (QuartzLogService)BeanLocator.getBeanInstance("quartzLogService"); } }
然后在初始化StdSchedulerFactory时添加全局监听器,
factory = new StdSchedulerFactory(configProperties); //启动调度 scheduler = factory.getScheduler(); TriggerListener myListener=new MonitorTriggerListener(); scheduler.addGlobalTriggerListener(myListener); scheduler.start();
这样同样可以达到监控效果。
相关推荐
开发者可能通过自定义Listener或者使用Quartz提供的内置监听器来监控Job的执行情况。 5. **异常处理**:在任务执行过程中,可能会遇到各种异常,如何捕获并处理这些异常,确保任务的稳定性和可靠性,也是监控管理的...
这样的界面可以方便地进行任务的添加、删除、暂停、恢复和监控,以及查看作业执行日志等操作。 6. **实际应用** 在实际项目中,Quartz可以用于各种场景,如定期数据备份、清理过期记录、发送邮件通知等。通过MVC与...
5. **监听器(Listener)**:可以监听作业和触发器的生命周期事件,提供日志、监控等功能。 6. **持久化**:Quartz支持数据库持久化,即使在服务器重启后也能恢复之前的状态,保证任务的连续性。 7. **API和工具类...
- **全局监听器配置**:允许添加多个监听器来跟踪作业和触发器的状态变化。 - **作业监听器**:监控作业执行过程中的状态变化。 - **触发器监听器**:监控触发器的状态变化。 - **插件配置**:通过插件可以扩展...
同时,为了方便管理和监控,可以实现监听器接口,如`SchedulerListener`,监听调度事件,例如任务开始、结束等。 在项目中,我们还需要引入Quartz相关的依赖库,如本例中的`quartz-1.7.3.jar`,以及辅助库`commons-...
第7章的主题聚焦于实现Quartz监听器,这是一个关键特性,它使得开发者能够监控和响应Quartz调度器的事件。 在Quartz中,监听器提供了对作业执行、触发器状态改变和其他内部调度事件的观察能力。这有助于调试、日志...
5. **监听器**:Quartz 2.x 提供了更丰富的监听器功能,可以在 Spring 配置中添加 JobListener 和 TriggerListener。 6. **Cron 表达式**:在定义 Trigger 时,可以使用更灵活的 Cron 表达式,如 `@Scheduled(cron ...
- 可以使用Quartz提供的监控台(JMX)来查看和管理Job的执行情况,或者自定义监听器记录执行日志。 7. **异常处理** - 通过实现`org.springframework.scheduling.quartz.JobExecutionException`,可以捕获Job执行...
8. **监听机制**:可以通过监听器(Listener)监控作业和触发器的状态变化,例如任务执行前后进行特定操作。 9. **线程池集成**:Quartz 可以与应用的线程池集成,优化资源利用。 10. **强大的API和文档**:Quartz...
- 在项目中添加 Quartz 相关的依赖库,如 `quartz-1.6` 或 `quartz-1.8`,以及 Spring 提供的上下文支持、Web 支持、日志库(如 Commons-collections)等。 3. **编写 Job 类** - 创建一个实现了 `org.quartz.Job...
- **Job监听器**:添加 Job 监听器,记录 Job 执行日志或执行异常情况。 - **Trigger监听器**:监听 Trigger 的状态变化,例如触发延迟或提前。 - **JobGroup和TriggerGroup**:使用组来管理和组织 Job 和 ...
Quartz允许添加作业监听器和触发器监听器,以便在任务执行前后进行日志记录、统计或其他操作。 Quartz提供的灵活性和强大功能使其成为Java定时任务的理想选择。通过理解上述基本概念和操作,你可以创建复杂的定时...
3. **监听器机制**:通过监听器监控作业和触发器的状态变化,实现更精细的控制。 4. **自定义插件**:通过插件机制扩展 Quartz 的功能,满足特定场景的需求。 #### 九、Quartz 在实际项目中的注意事项 1. **异常...
同时,为了使用Quartz Web,还需要在Web应用中配置相关的Servlet和监听器,以便提供Web界面服务。 在"quartz_web.rar"中,可能包含以下内容: - 示例代码:展示了如何创建Job、Trigger以及如何与Quartz Web集成的...
3. 作业监听器和触发器监听器:可以添加自定义的监听器来监听作业执行和触发器触发事件,方便日志记录和监控。 4. 回调函数:Quartz.NET提供`JobExecutionException`处理,当作业执行过程中出现异常时,可以通过回...
- Quartz提供了多种监听器,如JobListener、TriggerListener和SchedulerListener,可以监听Job执行、Trigger触发和Scheduler状态变化,为日志记录、监控和异常处理提供便利。 6. **API与配置**: - Quartz提供了...
4. **JobListeners**和**TriggerListeners**:这些监听器允许在Job执行前后或Trigger触发前后执行自定义代码,增加了日志记录、监控等功能。 5. **Persistency**:Quartz支持持久化,Job和Trigger的信息可以存储在...
- Trigger监听器和Job监听器:可以添加监听器来监控Job的执行状态和Trigger的触发情况,便于日志记录和异常处理。 - JobDetail和Trigger绑定:你可以为同一个Job创建多个Trigger,使其在不同的时间点执行。 在...
- **监听器和插件**:介绍如何使用SchedulerListener、JobListener和TriggerListener监控调度事件,以及如何集成和使用Quartz提供的插件。 - **错误处理和异常管理**:如何处理任务执行中的异常,以及如何配置全局...
5. **日志和监控**:Quartz提供了丰富的日志接口和管理工具,如JMX,可以帮助开发者监控和调试任务执行情况。 总之,这个"quartz1.8 范例"涵盖了Quartz在独立线程和Web环境下的使用,对于理解如何在Java项目中利用...