Quartz快速入门
生活随笔
收集整理的這篇文章主要介紹了
Quartz快速入门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Quartz快速入門
1.下載地址http://www.quartz-scheduler.org/downloads/ 寫此文章時的最新版是2.2.1。 2.解壓縮將基本包quartz-2.2.1.jar放到工程中,如果你工程中連log4j都沒有的話,那就把日志相關的幾個jar包一起放到工程中。 ? 3.配置 創建quartz.properties文件 org.quartz.scheduler.instanceName?=?MyScheduler---------scheduler的名字,隨便起一個名字(還是起個有點意義的名字吧)
org.quartz.threadPool.threadCount=?3?--------線程池中最大線程數是3(最多三個job同時執行)
org.quartz.scheduler.skipUpdateCheck?=?true---跳過Quartz的自動更新檢查 配置參考:http://quartz-scheduler.org/documentation/quartz-2.x/configuration 4.一下是代碼了,為了方便將官方的代碼靠過來稍作修改,代碼里有標明。 1 import org.quartz.Scheduler; 2 import org.quartz.SchedulerException; 3 import org.quartz.impl.StdSchedulerFactory; 4 5 publicclassQuartzTest{ 6 7 publicstaticvoid main(String[] args){ 8 9 try{ 10 // Grab the Scheduler instance from the Factory 11 //初始化scheduler,官方文檔使用的后面的內容,所有配置都是默認值,為了使用我們辛苦配置的配置文件,我們用前面的方法。 12 Scheduler scheduler = new StdSchedulerFactory("quartz.properties").getScheduler();//StdSchedulerFactory.getDefaultScheduler(); 13 14 // and start it off 15 scheduler.start(); 16 //---------------插入執行的代碼-------------------------- 17 scheduler.shutdown(); 18 19 }catch(SchedulerException se){ 20 se.printStackTrace(); 21 } 22 } 23 }
?
(以上參考http://quartz-scheduler.org/overview/quick-start) 以上代碼就可以執行了,不過什么都沒干,只是啟動了和關閉了一下。- - ! 5. do something 要do sth需要Job,Trigger這些都是Quartz里的基本元素。看名字也能明白Job是干活的藍領。Trigger是觸發Job執行的,定時任務最關鍵的時間就是靠定義Trigger是定義的。 創建Job 新建一個類實現Job接口并寫execute方法實現。 1 import java.util.Date; 2 3 import org.apache.log4j.Logger; 4 import org.quartz.Job; 5 import org.quartz.JobExecutionContext; 6 import org.quartz.JobExecutionException; 7 8 public class JobTest implements Job{ 9 10 private static Logger logger = Logger.getLogger(JobTest.class); 11 12 public void execute(JobExecutionContext arg0) throws JobExecutionException { 13 logger.info("Hello world-----myQuartz-------class:JobTest method:execute" + new Date()); 14 15 } 16 17 } 18 然后,在第4步-----插入執行的代碼-------的位置插入以下代碼 19 try { 20 //定義一個任務,并綁定JobTest(自己創建的任務類) 21 JobBuilder jobBuilder = JobBuilder.newJob(JobTest.class); 22 jobBuilder.withIdentity("Job1", "Group1"); 23 24 JobDetail job = jobBuilder.build(); 25 //定義一個觸發任務執行的觸發器 26 TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger(); 27 triggerBuilder.withIdentity("Trigger1", "TriggerGroup1"); 28 //定義執行時間 29 Date runTime = DateBuilder.evenSecondDate(new Date()); 30 31 triggerBuilder.startAt(runTime); 32 triggerBuilder.withSchedule(SimpleScheduleBuilder.simpleSchedule(). 33 withIntervalInMilliseconds(10000).repeatForever()); 34 35 Trigger trigger = triggerBuilder.build(); 36 37 scheduler.scheduleJob(job, trigger); 38 logger.info(job.getKey() + " will run at...: " + runTime); 39 scheduler.start(); 40 logger.info("------- Started Scheduler -----------------"); 41 42 logger.info("------- Waiting 65 seconds... -------------"); 43 try { 44 Thread.sleep(65000); 45 } catch (InterruptedException e) { 46 e.printStackTrace(); 47 } 48 logger.info("------- Shutting Down ---------------------"); 49 scheduler.shutdown(); 50 logger.info("------- Shutdown Complete -----------------"); 51 } catch (SchedulerException e) { 52 e.printStackTrace(); 53 } View Code?
汗!可算寫完了,這么長。最好弄個Util工具類 一下是我寫的工具類,主要實現job和trigger的創建,大家借鑒: ? 1 import java.util.Date; 2 3 import org.quartz.Job; 4 import org.quartz.JobBuilder; 5 import org.quartz.JobDetail; 6 import org.quartz.Scheduler; 7 import org.quartz.SchedulerException; 8 import org.quartz.SimpleScheduleBuilder; 9 import org.quartz.Trigger; 10 import org.quartz.TriggerBuilder; 11 import org.quartz.impl.StdSchedulerFactory; 12 13 /** 14 * 定時任務工具類 15 * @author llhua 16 * 17 */ 18 public class TaskUtil { 19 /** 20 * 初始化一個全部默認配置的scheduler 21 * @return 22 * @throws SchedulerException 23 */ 24 public static Scheduler getDefaultScheduler() throws SchedulerException{ 25 return StdSchedulerFactory.getDefaultScheduler(); 26 } 27 28 /** 29 * 初始化一個通過配置文件配置的配置的scheduler 30 * @return 31 * @throws SchedulerException 32 */ 33 public static Scheduler getScheduler(String confFile) throws SchedulerException{ 34 return new StdSchedulerFactory(confFile).getScheduler(); 35 } 36 37 /** 38 * 定義一個job 39 * @param jobClazz 40 * @param name 41 * @param group 42 * @return 43 */ 44 public static JobDetail getJob(Class<? extends Job> jobClazz, String name, String group){ 45 return JobBuilder.newJob(jobClazz).withIdentity(name, group).build(); 46 } 47 48 /** 49 * 定義一個立即開始的觸發器(.startNow()) 50 * @param schedBuilder 51 * @param name 52 * @param group 53 * @return 54 * 55 * SimpleScheduleBuilder一般用法 56 * SimpleScheduleBuilder.simpleSchedule(). 57 withIntervalInMilliseconds(10000).repeatForever() 58 */ 59 public static Trigger getSimpleTrigger(SimpleScheduleBuilder schedBuilder, String name, String group){ 60 return TriggerBuilder.newTrigger().withIdentity(name, group).startNow().withSchedule(schedBuilder).build(); 61 } 62 /** 63 * 定義一個在指定時間開始的觸發器(.startAt()) 64 * @param schedBuilder 65 * @param name 66 * @param group 67 * @return 68 */ 69 public static Trigger getSimpleTrigger(Date runTime, SimpleScheduleBuilder schedBuilder, String name, String group){ 70 return TriggerBuilder.newTrigger().withIdentity(name, group).startAt(runTime).withSchedule(schedBuilder).build(); 71 } 72 73 public static Trigger getCronTrigger(){ 74 return null; 75 } 76 77 public static Trigger getNthIncludedDayTrigger(){ 78 return null; 79 } 80 81 } View Code?
說明:最下面有三個get Trigger的方法代表了Quartz中已經有的三種Trigger,簡單的已經可以實現基本的應用了,如有復雜應用可以實現下面兩種。在下目前還沒用到。轉載于:https://www.cnblogs.com/llhua/p/3393306.html
總結
以上是生活随笔為你收集整理的Quartz快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广东发展银行系统分析师面试问题
- 下一篇: HTML5 Web app开发工具Ken