quartz的第一个任务
1: pom依赖
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
2: 调度器:
package com.kailing.bootBatch.quartz; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; /** * <h3>partitionjob</h3> * <p>demo job1</p> * * @author : hduong * @version : 1.0 * @date : 2019-12-18 16:42 **/ public class DemoJob1 { public static void main(String[] args) throws SchedulerException { JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity("job1", "job1Group") .usingJobData("hongdu", "洪都的job1测试") .usingJobData("moon", 5.21F) .build(); //定义触发器 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("trigger1", "trigger1Group") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(2) //永远重复 .repeatForever() ).build(); //DirectSchedulerFactory StdSchedulerFactory 工厂模式 SchedulerFactory schedulerFactory =new StdSchedulerFactory(); //通过工厂获取调度器 Scheduler scheduler = schedulerFactory.getScheduler(); //注册 绑定 scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); } }
3: 任务定义:
package com.kailing.bootBatch.quartz; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * <h3>partitionjob</h3> * <p>myjob</p> * 定义一个 quartz 的 job * job三大神器: * 1: JobBuilder -》 JobDetail * 2: SchedulerFactory -》 Scheduler (线程池去跑任务) * 3: TriggerBuilder -》 Trigger 触发器 * 4: 注册: 将触发器和任务 注册到调度器中 * @author : hduong * @version : 1.0 * @date : 2019-12-18 16:30 **/ public class MyJob implements Job { /** * 执行上下文: * jobDataMap : job数据配置 * 可以携带 KV 的数据(JobDataMap),用于扩展属性,在运行的时候可以从 context 获取到。 * 必须要指定 JobName 和 groupName,两个合起来是唯一标识符 * @param jobExecutionContext * @throws JobExecutionException */ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap(); // System.out.println(jobExecutionContext); System.out.println("假发在哪里买的"); // System.out.println(jobDataMap.toString()); System.out.println(jobDataMap.getString("hongdu")); } }
4: 执行结果:
假发在哪里买的
洪都的job1测试
假发在哪里买的
。。。
总结:
定义任务, 在调度器中绑定任务和触发器,启动调度器。