`
征途2010
  • 浏览: 247605 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

quartz监控日志(二)添加监听器

阅读更多

 

上一章介绍监控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();

 这样同样可以达到监控效果。

分享到:
评论

相关推荐

    Quartz任务监控管理

    开发者可能通过自定义Listener或者使用Quartz提供的内置监听器来监控Job的执行情况。 5. **异常处理**:在任务执行过程中,可能会遇到各种异常,如何捕获并处理这些异常,确保任务的稳定性和可靠性,也是监控管理的...

    quartz 定时任务调度

    这样的界面可以方便地进行任务的添加、删除、暂停、恢复和监控,以及查看作业执行日志等操作。 6. **实际应用** 在实际项目中,Quartz可以用于各种场景,如定期数据备份、清理过期记录、发送邮件通知等。通过MVC与...

    quartz动态任务管理

    5. **监听器(Listener)**:可以监听作业和触发器的生命周期事件,提供日志、监控等功能。 6. **持久化**:Quartz支持数据库持久化,即使在服务器重启后也能恢复之前的状态,保证任务的连续性。 7. **API和工具类...

    Quartz_Scheduler_Configuration_Guide.pdf Version2.2.1

    - **全局监听器配置**:允许添加多个监听器来跟踪作业和触发器的状态变化。 - **作业监听器**:监控作业执行过程中的状态变化。 - **触发器监听器**:监控触发器的状态变化。 - **插件配置**:通过插件可以扩展...

    Quartz Job Scheduling Framework第7章翻译初稿

    第7章的主题聚焦于实现Quartz监听器,这是一个关键特性,它使得开发者能够监控和响应Quartz调度器的事件。 在Quartz中,监听器提供了对作业执行、触发器状态改变和其他内部调度事件的观察能力。这有助于调试、日志...

    spring3整合quartz1.8和spring3整合quartz2.2两个版本示例

    5. **监听器**:Quartz 2.x 提供了更丰富的监听器功能,可以在 Spring 配置中添加 JobListener 和 TriggerListener。 6. **Cron 表达式**:在定义 Trigger 时,可以使用更灵活的 Cron 表达式,如 `@Scheduled(cron ...

    Quartz1.7 动态添加、修改和删除定时任务(非spring集成版)

    同时,为了方便管理和监控,可以实现监听器接口,如`SchedulerListener`,监听调度事件,例如任务开始、结束等。 在项目中,我们还需要引入Quartz相关的依赖库,如本例中的`quartz-1.7.3.jar`,以及辅助库`commons-...

    Java_Spring与Quartz的整合

    - 可以使用Quartz提供的监控台(JMX)来查看和管理Job的执行情况,或者自定义监听器记录执行日志。 7. **异常处理** - 通过实现`org.springframework.scheduling.quartz.JobExecutionException`,可以捕获Job执行...

    quartz2.2.1帮助手册

    8. **监听机制**:可以通过监听器(Listener)监控作业和触发器的状态变化,例如任务执行前后进行特定操作。 9. **线程池集成**:Quartz 可以与应用的线程池集成,优化资源利用。 10. **强大的API和文档**:Quartz...

    spring添加触发器+quartz

    - 在项目中添加 Quartz 相关的依赖库,如 `quartz-1.6` 或 `quartz-1.8`,以及 Spring 提供的上下文支持、Web 支持、日志库(如 Commons-collections)等。 3. **编写 Job 类** - 创建一个实现了 `org.quartz.Job...

    quartz15个例子

    - **Job监听器**:添加 Job 监听器,记录 Job 执行日志或执行异常情况。 - **Trigger监听器**:监听 Trigger 的状态变化,例如触发延迟或提前。 - **JobGroup和TriggerGroup**:使用组来管理和组织 Job 和 ...

    java定时任务quartz的基本实现

    Quartz允许添加作业监听器和触发器监听器,以便在任务执行前后进行日志记录、统计或其他操作。 Quartz提供的灵活性和强大功能使其成为Java定时任务的理想选择。通过理解上述基本概念和操作,你可以创建复杂的定时...

    quartz_web

    同时,为了使用Quartz Web,还需要在Web应用中配置相关的Servlet和监听器,以便提供Web界面服务。 在"quartz_web.rar"中,可能包含以下内容: - 示例代码:展示了如何创建Job、Trigger以及如何与Quartz Web集成的...

    利用Quartz.net实现任务调度

    3. 作业监听器和触发器监听器:可以添加自定义的监听器来监听作业执行和触发器触发事件,方便日志记录和监控。 4. 回调函数:Quartz.NET提供`JobExecutionException`处理,当作业执行过程中出现异常时,可以通过回...

    quartz包和官方例子

    - Quartz提供了多种监听器,如JobListener、TriggerListener和SchedulerListener,可以监听Job执行、Trigger触发和Scheduler状态变化,为日志记录、监控和异常处理提供便利。 6. **API与配置**: - Quartz提供了...

    quartz 1.8.6 API 文档

    4. **JobListeners**和**TriggerListeners**:这些监听器允许在Job执行前后或Trigger触发前后执行自定义代码,增加了日志记录、监控等功能。 5. **Persistency**:Quartz支持持久化,Job和Trigger的信息可以存储在...

    Quartz的学习

    - Trigger监听器和Job监听器:可以添加监听器来监控Job的执行状态和Trigger的触发情况,便于日志记录和异常处理。 - JobDetail和Trigger绑定:你可以为同一个Job创建多个Trigger,使其在不同的时间点执行。 在...

    QuartzAPI中文chm

    - **监听器和插件**:介绍如何使用SchedulerListener、JobListener和TriggerListener监控调度事件,以及如何集成和使用Quartz提供的插件。 - **错误处理和异常管理**:如何处理任务执行中的异常,以及如何配置全局...

    quartz1.8 范例

    5. **日志和监控**:Quartz提供了丰富的日志接口和管理工具,如JMX,可以帮助开发者监控和调试任务执行情况。 总之,这个"quartz1.8 范例"涵盖了Quartz在独立线程和Web环境下的使用,对于理解如何在Java项目中利用...

Global site tag (gtag.js) - Google Analytics