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測試
假髮在哪裏買的
。。。
總結:
定義任務, 在調度器中綁定任務和觸發器,啓動調度器。