Quartz是一個開源作業調度框架。 它可用于管理和計劃應用程序中的作業。
步驟1:建立已完成的專案
創建一個Maven項目,如下所示。 (可以使用Maven或IDE插件來創建它)。
步驟2:圖書館
Quartz依賴項已添加到Maven的pom.xml中。 這些依賴庫將由Maven Central Repository下載。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>OTV_Quartz</groupId><artifactId>OTV_Quartz</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- Quartz library --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.0.2</version></dependency> <!-- Log4j library --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency> </dependencies></project>
步驟3:建立新工作
通過實現如下所示的Quartz Job接口創建一個新的Job。 TestJob類指定將要安排的業務邏輯。
package com.otv.job;import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class TestJob implements Job {private Logger log = Logger.getLogger(TestJob.class);public void execute(JobExecutionContext jExeCtx) throws JobExecutionException {log.debug("TestJob run successfully...");}}
步驟4:將工作與工作細節對象關聯
創建的TestJob類與JobDetail對象鏈接。
JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity("testJob").build();
第5步:創建新觸發器
如下創建一個新的觸發器。 觸發器類別指定將要計劃的作業的運行周期。 石英觸發器有兩種:
觸發器 :指定作業的開始時間,結束時間,運行時間。
CronTrigger :根據Unix cron表達式指定作業的開始時間,結束時間,運行時間。
//Trigger the job to run on the next round minute
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();// CronTrigger the job to run on the every 20 seconds
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("crontrigger","crontriggergroup1").withSchedule(CronScheduleBuilder.cronSchedule("10 * * * * ?")).build();
步驟6:建立SchedulerFactory
創建一個新的SchedulerFactory并從SchedulerFactory類獲取一個Scheduler對象。
SchedulerFactory schFactory = new StdSchedulerFactory();
Scheduler sch = schFactory.getScheduler();
步驟7:啟動排程器
調度程序對象已啟動。
// Start the schedule
sch.start();
步驟8:安排工作
已安排TestJob:
// Tell quartz to schedule the job using the trigger
sch.scheduleJob(job, trigger);
步驟9:完整示例
TestJob將每分鐘運行兩次。
package com.otv;import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;import com.otv.job.TestJob;/**
* @author onlinetechvision.com
* @since 17 Sept 2011
* @version 1.0.0
*
*/
public class JobScheduler {public static void main(String[] args) {try {// specify the job' s details..JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity("testJob").build();// specify the running period of the jobTrigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();//schedule the jobSchedulerFactory schFactory = new StdSchedulerFactory();Scheduler sch = schFactory.getScheduler();sch.start();sch.scheduleJob(job, trigger);} catch (SchedulerException e) {e.printStackTrace();}}}
步驟10:輸出
運行JobScheduler Class時,輸出將如下所示:
17.09.2011 23:39:37 DEBUG (TestJob.java:13) - TestJob run successfully...
17.09.2011 23:40:07 DEBUG (TestJob.java:13) - TestJob run successfully...
17.09.2011 23:40:37 DEBUG (TestJob.java:13) - TestJob run successfully...
17.09.2011 23:41:07 DEBUG (TestJob.java:13) - TestJob run successfully...
步驟11:下載
- OTV_Quartz_Project
參考: 在線技術愿景博客上的JCG合作伙伴 Eren Avsarogullari的Quartz 2 Scheduler 。
翻譯自: https://www.javacodegeeks.com/2012/07/quartz-2-scheduler-example.html