quartz使用(一),quartz使用(

來源:互聯網
上載者:User

quartz使用(一),quartz使用(

在項目中經常會碰到定時任務,quartz是一款非常優秀的開源架構, 提供了定時任務的支援,還支援任務的持久化,並且提供了對資料庫的支援。下面首先對quartz做一個簡單介紹,並附上一個小例子。

1、下面是quartz的官網:

http://www.quartz-scheduler.org//,開啟網址我們可以看到quartz最新的版本是2.2.3這裡我也以此版本作為例子的環境。quartz從2.0版本其做了很大的改變,具體的變化可以自己查閱相關資料,在此不贅述。

2、我這裡下載的是quartz-2.2.3-distribution.tar.gz,用解壓縮工具解壓出來得到如的檔案目錄結構,

docs:quartz的文檔資訊,包含了和資料庫相關的建表sql;

examples:例子;

javadoc:使用java的doc,可以使用jd2chm工具轉化為chm格式的文檔;

lib:quartz的jar包,包含了使用quartz的所有包(依賴包和quartz的jar包);

licenses:許可檔案;

src:quartz的源碼;

3、從lib包裡我們可以看到quartz的日誌系統使用的是slf4j,但是其真正的日誌系統是log4j,具體的日誌架構描述,可以參看我別的文章。

4、quartz即可以用在java工程中,也可以用在javaweb項目中,這裡以javaweb項目為環境做例子。

5、把quartz檔案夾下的lib檔案夾裡的所有jar包放到項目的lib目錄下。

6、經過上面的步驟就把quartz引入到了工程中。

下面是具體的例子的說明及代碼:

一、首先,要建立一個任務,quartz規定任務必須實現org.quarta.Job介面,此介面就一個方法execute,這個方法就是任務執行的時候允許的方法,具體的業務實現在這個方法裡,我這裡只進行了簡單的列印,

 1 package com.cn.myScheduler; 2  3 import org.quartz.Job; 4 import org.quartz.JobExecutionContext; 5 import org.quartz.JobExecutionException; 6 public class MyJob implements Job { 7     @Override 8     public void execute(JobExecutionContext arg0) throws JobExecutionException { 9         // TODO Auto-generated method stub10         System.out.println("this is my first scheduler!");11     }12 13 }

二、建立完任務之後,我們還要建立一個包含任務資訊的jobDetail,一個管理工作執行的促發器trigger,最後就是調度任務,

 1 package com.cn.myScheduler; 2  3 import org.quartz.JobBuilder; 4 import org.quartz.JobDetail; 5 import org.quartz.Scheduler; 6 import org.quartz.SchedulerException; 7 import org.quartz.SchedulerFactory; 8 import org.quartz.SimpleScheduleBuilder; 9 import org.quartz.Trigger;10 import org.quartz.TriggerBuilder;11 import org.quartz.impl.StdSchedulerFactory;12 public class TestMyJob {13     public static void main(String[] args) {14         // TODO Auto-generated method stub15         try{16         //1、獲得一個scheduler17         SchedulerFactory sf=new StdSchedulerFactory();18         Scheduler scheduler =sf.getScheduler();19         //2、獲得一個jobDetail20         JobDetail job = JobBuilder.newJob(MyJob.class)21                  .withIdentity("myJob")22                  .build();23 24         //3、獲得一個trigger25          Trigger trigger = TriggerBuilder.newTrigger()26                   .withIdentity("trigger1", "group1")27                   .startNow()28                   .withSchedule(SimpleScheduleBuilder.simpleSchedule()29                           .withIntervalInSeconds(40)30                           .withRepeatCount(10))31                          .build();32         //4、把任務和觸發器放到scheduler中33         scheduler.scheduleJob(job, trigger);34         //5、開始任務調度35         scheduler.start();36         }37         catch(SchedulerException e){38             e.printStackTrace();39         }40     }41 42 }

注釋1:建立一個scheduler,scheduler負責所有任務的調度。

注釋2:建立一個包含任務資訊的jobDetail,指定任務的實作類別為MyJob.class,使用withIdentity方法指定任務名稱,還可以用第二個參數指定任務的組名

注釋3:建立一個任務促發器,指定了促發器的名稱“trigger1”和促發器的組名“group1”;設定了促發的時間為當前促發,且每隔40S執行一次,一共執行10次

注釋4:把jobDetail和trigger放到scheduler中

注釋5:啟動scheduler

運行程式可以看到程式的輸出。

以上就是一個簡單的quartz定時任務。

有關quartz的內容會持續更新!

謝謝!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.