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测试
假发在哪里买的
。。。
总结:
定义任务, 在调度器中绑定任务和触发器,启动调度器。
3018

被折叠的 条评论
为什么被折叠?



