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失效问题(其实就是重新注册监听器)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值