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框架

相關文章
相關標籤/搜索