1.github 3.9k星
https://github.com/quartz-scheduler/quartz/blob/master/docs/quick-start-guide.adoc
2.引入jar包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
3.新建job
package com.zhenzhen.demo.springboot.job;
import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class MyJob extends QuartzJobBean{
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("开始执行"+DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
try {
for(;;) {
Thread.sleep(50);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
log.info("结束执行"+DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
}
4.main方法测试Scheduler
package com.zhenzhen.demo.springboot;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import com.zhenzhen.demo.springboot.job.MyJob;
public class QuartzTest {
public static void main(String[] args) {
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 jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob1","myJobGroup1")
.storeDurably()
.build();
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = TriggerBuilder.newTrigger()
.forJob(jobDetail)
.withIdentity("myTrigger1","myTriggerGroup1")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/1 * * * ?"))
.build();
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(jobDetail, trigger);
//scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
5.JobDetail的属性,和创建
group
name
jobClass
JobDataMap
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob1","myJobGroup1")
.usingJobData("testkey","testValue")
.usingJobData("testkey2",1)
.storeDurably()
.build();