`
hypgr
  • 浏览: 273250 次
社区版块
存档分类
最新评论

spring框架使用任务调度quartz的例子-TriggerListener 篇

阅读更多

       有时候我们的任务(Job)需要再某些任务完成之后才能进行;例如从旧的数据库批量导数据的时候;需要现将被其他数据依赖的数据导入新的数据库;然后再进行关系的导入.。在这种情况下我们就可以使用Quartz的listener来做文章了。
        首先我们写一个主任务的类,命名为MainJob;她的作用是作为一系列任务的开始点。
MainJob.java

package jobs;

import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class MainJob extends QuartzJobBean {
    
private  Logger logger = Logger.getLogger(getClass());
    @Override
    
protected void executeInternal(JobExecutionContext arg0)
            
throws JobExecutionException {
        
// TODO Auto-generated method stub
        logger.debug("Just say hi.");
    }


}


        然后我们新建另外一个任务(SecondJob)作为后续任务:
SecondJob.java

package jobs;

import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class SecondJob extends QuartzJobBean {
    
private  Logger logger = Logger.getLogger(getClass());
    @Override
    
protected void executeInternal(JobExecutionContext arg0)
            
throws JobExecutionException {
        
// TODO Auto-generated method stub
        logger.debug("I'm the second job.");
    }


}

        创建一个TriggerListener,重写其triggerComplete方法,并且添加一些方便spring注入的属性和方法。
NextJobTriggerListener.java


        配置spring 的applicationContext.xml
applicationContext.xml

       开启服务器,输出

DEBUG [MainJob.executeInternal(14)]  Just say hi.
DEBUG 
[NextJobTriggerListener.triggerComplete(38)]  inside scheduleJob.3
DEBUG [SecondJob.executeInternal(14)] I'm the second job.
DEBUG 
[NextJobTriggerListener.triggerComplete(43)]  oldJob==null:false
DEBUG 
[NextJobTriggerListener.triggerComplete(44)]  oldTrigger==null:false


        另外这里一个任务只绑定了一个简单的触发器,这样做是为了比较方便地可以检测到任务完成的情况;至于任务的具体内容就任由大家发挥了。写这篇文章希望能有人在其中获得启发。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics