Quartz任务调度

    quartz是一个任务调度框架,它能够设置在任意时间有规律的作一些事情。好比每隔一个小时记录一第二天志,每周三统计一次等等。html

    做者使用的是quartz-all-1.6.5.jar版本的。其实它就三点要素,第一,时间调度器(Scheduler);第二,程序触发点(Trigger&SimpleTrigger)即该程序何时开始执行,怎么执行;第三,程序执行任务(JobDetail & Job)即到了这个时间点,程序要执行的内容是什么;java

1、web.xml配置

    初始化quartz使得该程序在项目启动时触发。web

<servlet>
		<servlet-name>QuartzInitializer</servlet-name>
		<servlet-class>
			org.quartz.ee.servlet.QuartzInitializerServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
</servlet>
<listener>
        <listener-class>com.sheca.eausp.common.util.QuartzTest</listener-class>
</listener>

2、使该quartz实现ServletContextListener容器接口

package com.sheca.eausp.common.util;

import java.util.Date;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.log4j.Logger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzTest implements ServletContextListener{
	private static Logger logger = Logger.getLogger(CacheTime.class);
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void contextInitialized(ServletContextEvent arg0) {
	  try {
            //建立scheduler
			logger.info("cache scheduler begin...");
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            JobDetail jobDetail = new JobDetail("updateCache", "group",
            		MyQuartz.class);//建立任务,真正的逻辑在MyQuartz中
            SimpleTrigger trigger = new SimpleTrigger("triggerName",
            		"group");//建立简单程序触发器
            trigger.setStartTime(new Date());//开始运行时间
            trigger.setRepeatInterval(3*60*1000);//运行间隔单位为毫秒
            trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);//程序重复次数
            scheduler.scheduleJob(jobDetail, trigger);//将程序触发器和任务加入程序调度器
            if (scheduler.isShutdown()) {
                scheduler.start();
            }
	   }catch (Exception e) {
		 logger.error("Exception is : ", e);
		}
	}
}

3、任务执行逻辑

任务执行类须要实现Job接口apache

package com.sheca.eausp.common.util;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class CacheQuartz implements Job {

	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("每隔三分钟执行一次该方法..");
	}

}

推荐博客:https://www.cnblogs.com/drift-ice/p/3817269.html框架

相关文章
相关标签/搜索