Java开源任务调度器Quartz的应用案例
日期:2016年09月01日 作者:雨水,CSDN博客:
http://blog.csdn.net/gobitan
摘要:任务调度在一般的应用系统中很常见,简单的定时任务用Java自带的Timer等即可实现。但对于稍微复杂一点的就需要借助第三方的库来实现,比如本文要实现的类似linux中的crontab任务,可采用Quartz实现。
本文基于Quartz实现了一个在每天凌晨零点零分零秒执行的一个任务。
第一步:依赖库添加
将如下jar包依赖以maven的方式加入到工程的pom.xml文件中。
<
dependency
>
<
groupId
>
org.quartz-scheduler
</
groupId
>
<
artifactId
>
quartz
</
artifactId
>
<
version
>
2.2.1
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
org.quartz-scheduler
</
groupId
>
<
artifactId
>
quartz-jobs
</
artifactId
>
<
version
>
2.2.1
</
version
>
</
dependency
>
第二步:实例化并启动一个调度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
第三步:创建Job类
自定义Job类需要实现org.quartz.Job接口的execute方法。如下所示:
public class LogJob implements org.quartz.Job {
private Logger logger = Logger.getLogger(this.getClass());
public LogJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
logger.info("The log job is executed.");
}
}
这里只是为了举例,所以该任务只是打印一个日志。
第四步:创建job及触发器trigger
final String CRON_RULES = "0 0 0 * * ?";
JobDetail job = newJob(CleanCachedPushMessageJob.class).withIdentity(
"job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1")
.withSchedule(cronSchedule(CRON_RULES)).forJob(job)
.build();
这里触发该任务的规则类似linux中的crontab。本文中的规则表达的是每天凌晨零点零分零秒执行该任务。如果需要修改其他方式,参见本文参考资料[2]。
第四步:加载调度任务
scheduler.scheduleJob(job, trigger);
本文完整的maven工程例子可以在
https://github.com/dennishucd/J2EE/tree/master/quartzexample下载到。
参考资料: