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