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

Quartz-Listener

阅读更多

监听器方便在Trigger执行完毕,Trigger执行错误等地方进行监听处理。

下面代码举个SchedulerListener的例子: 在Trigger最后一次执行的时候监听

 

[java] view plain copy
 
 print?
  1. import javax.annotation.Resource;  
  2. import org.quartz.JobDetail;  
  3. import org.quartz.JobKey;  
  4. import org.quartz.Scheduler;  
  5. import org.quartz.SchedulerException;  
  6. import org.quartz.SchedulerListener;  
  7. import org.quartz.Trigger;  
  8. import org.quartz.TriggerKey;  
  9. import org.slf4j.Logger;  
  10. import org.slf4j.LoggerFactory;  
  11. import org.springframework.stereotype.Service;  
  12.   
  13.   
  14.   
  15. /** 
  16.  *  
  17.  * @ClassName: SchedulerTriggerListener  
  18.  * @Description: Trigger监听器  
  19.  * @author zhuyb  
  20.  * @date 2014-12-15 下午7:39:28  
  21.  * 
  22.  */  
  23. @Service("schedulerTriggerListenerService")  
  24. public class SchedulerTriggerListenerServiceImpl implements SchedulerListener {  
  25.   
  26.     private static Logger logger = LoggerFactory.getLogger(SchedulerTriggerListenerServiceImpl.class);  
  27.       
  28.       
  29.     @Resource  
  30.     private SchedulerTriggersService schedulerTriggersService;  
  31.       
  32.     @Resource  
  33.     private Scheduler scheduler;  
  34.   
  35.     @Override  
  36.     public void jobScheduled(Trigger trigger) {  
  37.         // TODO Auto-generated method stub  
  38.           
  39.     }  
  40.   
  41.   
  42.     @Override  
  43.     public void jobUnscheduled(TriggerKey triggerKey) {  
  44.         // TODO Auto-generated method stub  
  45.           
  46.     }  
  47.   
  48.     /** 
  49.      *  
  50.      * @Title: triggerFinalized  
  51.      * @Description: 轮询删除已被Quartz删除的内容  
  52.      * @param @param trigger      
  53.      * @author zhuyb 
  54.      * @throws 
  55.      */  
  56.     @Override  
  57.     public void triggerFinalized(Trigger trigger) {  
  58.         try {  
  59.             if (trigger.getNextFireTime() == null) {  
  60.                 logger.info("Name="+trigger.getKey().getName()+ ", Group=" + trigger.getKey().getGroup());  
  61.                 int i = schedulerTriggersService.deleteByNotExistInTriggers();  
  62.                 logger.info("删除行数:" + i);  
  63.             }  
  64.         } catch (Exception e) {  
  65.             logger.error("监听器错误:",e);  
  66.         }  
  67.     }  
  68.   
  69.     @Override  
  70.     public void triggerPaused(TriggerKey triggerKey) {  
  71.           
  72.     }  
  73.   
  74.   
  75.     @Override  
  76.     public void triggersPaused(String triggerGroup) {  
  77.         // TODO Auto-generated method stub  
  78.           
  79.     }  
  80.   
  81.   
  82.     @Override  
  83.     public void triggerResumed(TriggerKey triggerKey) {  
  84.         // TODO Auto-generated method stub  
  85.           
  86.     }  
  87.   
  88.   
  89.     @Override  
  90.     public void triggersResumed(String triggerGroup) {  
  91.         // TODO Auto-generated method stub  
  92.           
  93.     }  
  94.   
  95.   
  96.     @Override  
  97.     public void jobAdded(JobDetail jobDetail) {  
  98.         // TODO Auto-generated method stub  
  99.           
  100.     }  
  101.   
  102.   
  103.     @Override  
  104.     public void jobDeleted(JobKey jobKey) {  
  105.     }  
  106.   
  107.   
  108.     @Override  
  109.     public void jobPaused(JobKey jobKey) {  
  110.         // TODO Auto-generated method stub  
  111.           
  112.     }  
  113.   
  114.   
  115.     @Override  
  116.     public void jobsPaused(String jobGroup) {  
  117.         // TODO Auto-generated method stub  
  118.           
  119.     }  
  120.   
  121.   
  122.     @Override  
  123.     public void jobResumed(JobKey jobKey) {  
  124.         // TODO Auto-generated method stub  
  125.           
  126.     }  
  127.   
  128.   
  129.     @Override  
  130.     public void jobsResumed(String jobGroup) {  
  131.         // TODO Auto-generated method stub  
  132.           
  133.     }  
  134.   
  135.   
  136.     @Override  
  137.     public void schedulerError(String msg, SchedulerException cause) {  
  138.         // TODO Auto-generated method stub  
  139.           
  140.     }  
  141.   
  142.   
  143.     @Override  
  144.     public void schedulerInStandbyMode() {  
  145.         // TODO Auto-generated method stub  
  146.           
  147.     }  
  148.   
  149.   
  150.     @Override  
  151.     public void schedulerStarted() {  
  152.     }  
  153.   
  154.   
  155.     @Override  
  156.     public void schedulerStarting() {  
  157.           
  158.     }  
  159.   
  160.   
  161.     @Override  
  162.     public void schedulerShutdown() {  
  163.         // TODO Auto-generated method stub  
  164.           
  165.     }  
  166.   
  167.   
  168.     @Override  
  169.     public void schedulerShuttingdown() {  
  170.           
  171.     }  
  172.   
  173.   
  174.     @Override  
  175.     public void schedulingDataCleared() {  
  176.         // TODO Auto-generated method stub  
  177.           
  178.     }  

其实可以不必实现上述接口(有一堆你不需要的方法要重写), 可以用SchedulerListenerSupport替代,只需要实现需要的方法。

 

 

监听注册:

 

 

[java] view plain copy
 
 print?
  1.        @Resource  
  2. private Scheduler scheduler;  
  3. @Resource  
  4. private SchedulerTriggerListenerServiceImpl schedulerTriggerListener;  
  5.        scheduler.getListenerManager().addSchedulerListener(schedulerTriggerListener);  

 

以上就是一个监听器在Spring的完整集成。

 

 

具体很多其他的监听功能看业务需求吧

官方API差不多够用了:


 

结合我的另一篇文字:http://blog.csdn.net/wenniuwuren/article/details/42004539

就能解决Listener因为服务器关闭或重启Listener失效问题(其实就是重新注册监听器)。

分享到:
评论

相关推荐

    quartz-2.2.1

    9. **插件扩展**:Quartz 还提供了许多插件,例如监听器(Listener)、拦截器(Interceptor)等,用于扩展其功能,如监控任务执行情况、增加日志记录等。 在实际项目中,开发者需要理解并掌握以上这些概念和功能,...

    quartz-2.1.7.zip

    3. **MessageListenerContainer**:这是一个容器类,可以管理消息监听器,负责从队列中拉取消息并调用监听器进行处理,支持多种消费者工作模式。 4. **消息转换**:Spring AMQP 支持多种消息转换器,可以将 Java ...

    quartz-2.2.0

    7. **Plugin Support**:Quartz具有丰富的插件系统,如JobStore插件、Listener插件等,用于扩展其功能。例如,MailSenderJobListener可以在Job执行前后发送邮件通知。 8. **API和配置**:Quartz提供简单易用的API,...

    quartz servletcontext配置资料

    <listener-class>org.quartz.listeners.SchedulerContextListener</listener-class> </listener> ``` 并在`destroy()`方法中停止Scheduler: ```java public void destroy() { Scheduler scheduler = ...

    spring添加触发器+quartz

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ``` 6. **启动和监控** - 一旦应用部署并启动,Quartz 会按照配置的 Cron 表达式自动执行 Job。你可以...

    spring注解Quartz定时执行功能

    在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...

    springMVC和Quartz定时

    在你的主程序或者`ApplicationListener`中,启动并管理调度器: ```java ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Scheduler scheduler = (Scheduler) ...

    quartz动态任务管理

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

    使用Quartz实现定时功能

    <listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class> </listener> ``` 此外,还需要配置`quartz.properties`文件来定义Quartz的运行参数,如JobStore的选择、数据库连接等。 综...

    quartz实例

    6. **监听器(Listener)**:Quartz还允许添加作业监听器和触发器监听器,它们可以在作业执行前后或触发器触发时执行某些操作,提供了一种扩展点。 在你的示例项目中,可能会包含以下关键部分: - `Job`类:定义了...

    quartz源码解析(一)

    - **观察者模式**:通过实现Listener接口,如JobListener和TriggerListener,可以监听调度事件,实现实时反馈。 - **策略模式**:Quartz支持多种策略(如SimpleTrigger、CronTrigger)来定义任务触发时间。 2. **...

    quartz2.2.1帮助手册

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

    Quartz

    而 Job 和 Trigger 的状态改变则通过 Listener 来监听和通知,这体现了观察者模式。 对于开发者来说,自定义作业(Job)非常简单,只需要实现 Job 接口并重写 execute 方法。而触发器可以通过 TriggerBuilder 创建...

    Quartz作业调度器

    5. **启动Scheduler**:在Spring的`ApplicationListener`或`CommandLineRunner`中调用`Scheduler`的`start()`方法启动调度。 Quartz的强大之处在于其灵活性和可扩展性。你可以为同一个作业定义多个触发器,或者为一...

    quartz开发手册

    ### quartz开发手册知识点详解 #### 一、Quartz概述与基本概念 - **Quartz**:是一款开源的任务调度框架,可以实现对Java应用程序中的任务进行调度,并且支持定时任务的触发方式,例如简单的重复触发(如每过5分钟...

    Quartz任务监控管理

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

    任务调度开源框架Quartz

    9. **监听器(Listener)**:Quartz允许注册作业监听器和触发器监听器,以便在作业执行前后或触发器触发前后进行额外的操作,如日志记录、状态更新等。 10. **错误处理**:Quartz支持捕获和处理作业执行时的异常,...

    spring整合quartz常见问题

    - **QRTZ_JOB_LISTENERS**: 存储有关已配置的JobListener的信息,包括JOB_NAME、JOB_GROUP和JOB_LISTENER等。 - **QRTZ_TRIGGER_LISTENERS**: 存储已配置的TriggerListener的信息。 - **QRTZ_FIRED_TRIGGERS**: 存储...

    quartz实现定制化定时任务-基于springboot.zip

    Quartz 是一个强大的开源作业调度框架,常被用于构建企业级的应用程序,提供精确和可扩展的定时任务功能。在Spring Boot中集成Quartz,我们可以方便地创建和管理定时任务,使得应用程序能够按照预设的时间间隔执行...

    java quartz开发指南(pdf)整理资料

    6. **监听器(Listener)**:Quartz允许添加各种监听器,如JobListener、TriggerListener和SchedulerListener,以便在特定事件发生时接收通知,如作业开始、结束或触发器触发。 在使用Quartz时,开发者通常会遵循...

Global site tag (gtag.js) - Google Analytics