1. Job
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Trigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloJob implements Job {
private static final Logger logger = LoggerFactory.getLogger(HelloJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
logger.info("### HelloJob execute ...");
JobDetail jobDetail = context.getJobDetail();
Trigger trigger = context.getTrigger();
JobDataMap jobDataMap = jobDetail.getJobDataMap();
JobDataMap triJobDataMap = trigger.getJobDataMap();
JobDataMap mergedJobDataMap = context.getMergedJobDataMap();
String jobName = jobDataMap.getString("jobName");
String triName = triJobDataMap.getString("triName");
// 公共key从merge job data获取数据得到trigger中的
String key = mergedJobDataMap.getString("key");
logger.info("jobName: {}", jobName);
logger.info("triName: {}", triName);
logger.info("key: {}", key);
}
}
2. 任务调度
public void quartz() {
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// and start it off
scheduler.start();
// define the job and tie it to our HelloJob class
JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1")
.usingJobData("jobName", "jobQuartz").usingJobData("key", "jobDetail").build();
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever())
.usingJobData("triName", "triQuartz").usingJobData("key", "trigger").build();
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);
// scheduler.shutdown();
} catch (SchedulerException e) {
e.printStackTrace();
}
}