使用quartz进行自定义作业调度
关于作业调度框架quartz的入门使用quartz的工作原理,涉及到三个对象,Scheduler,JobDetail,Trigger;Scheduler: 管理需要被调度任务的容器,它里面可以加入多个需要被调度的JobDetail。JobDetail: 具体的执行用户自定义的任务实体。Trigger: 对于任务调度的控制器,可以控制具体一个JobDetail
·
关于作业调度框架quartz的入门使用
-
quartz的工作原理,涉及到三个对象,Scheduler,JobDetail,Trigger;
Scheduler: 管理需要被调度任务的容器,它里面可以加入多个需要被调度的JobDetail。
JobDetail: 具体的执行用户自定义的任务实体。
Trigger: 对于任务调度的控制器,可以控制具体一个JobDetail执行的时间和次数。
-
项目里面使用maven引入quartz框架需要的相关jar包
<!-- ===================== quartz-scheduler 定时任务=================== --> <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> <!-- =================== /quartz-scheduler 定时任务 =================== -->
- 自定义实现一个JobDetail的对象,需要实现 org.quartz.Job; 接口;
<pre name="code" class="java">package org.hinsteny.quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class BackUpJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException{ System.out.println("Hello! HelloJob is executing."); } }
- 在自定义的JobManager实现上述自定义Job的调度,从scheduler.start()开始对任务的调度;
package org.hinsteny.quartz; import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import static org.quartz.SimpleScheduleBuilder.*; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; public class BackupDBTask{ private SchedulerFactory schedulerFactory; private Scheduler scheduler; public void startBackupTask(){ schedulerFactory = new StdSchedulerFactory(); try { scheduler = schedulerFactory.getScheduler(); JobDetail jobDetail = getJobDetail(); Trigger trigger = getJobTrigger(jobDetail); scheduler.scheduleJob(jobDetail,trigger); //开始scheduler对任务进行调度 scheduler.start(); // scheduler.shutdown();停止scheduler } catch (SchedulerException e) { e.printStackTrace(); } } private JobDetail getJobDetail(){ return newJob(BackUpJob.class) .withIdentity("BackUpJob", "groupone") .build(); } private Trigger getJobTrigger(JobDetail jobDetail){ return newTrigger() .withIdentity("trigger", "groupone") .startNow() // start the job by now // .withSchedule(dailyAtHourAndMinute(0, 0)) .withSchedule(simpleSchedule() .withIntervalInSeconds(1) .repeatForever()) .forJob(jobDetail) .build(); } public static void main(String[] args){ BackupDBTask dbTask = new BackupDBTask(); dbTask.startBackupTask(); } }
更多推荐
所有评论(0)