基本环境配置
新建maven工程,pom依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
log配置
log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="default" class="org.apache.log4j.ConsoleAppender">
<param name="target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c]%n%m%n%n"/>
</layout>
</appender>
<logger name="org.quartz">
<level value="error" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="default" />
</root>
</log4j:configuration>
demo使用
helloword入门
定义一个任务,实现Job 接口
public class EchoJob implements Job {
private static Logger _log = LoggerFactory.getLogger(EchoJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
_log.debug("echo: 入门例子");
}
}
将任务和调度器绑定起来
/**
* Created by it
* Created in 2019年1月26日
* Description:
*/
public class Example1 {
private static Logger _log = LoggerFactory.getLogger(Example1.class);
public static void main(String[] args) throws Exception {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
_log.debug("调度器启动成功...");
// 定义一次任务
JobDetail job = JobBuilder.newJob(EchoJob.class)
.withIdentity("jobName1", "groupName1").build();
// 定义执行时间,2秒1次
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("triggerName1", "groupName1")
.withSchedule(
CronScheduleBuilder.cronSchedule("0/2 * * * * ?"))
.build();
_log.debug("调度器,添加一次任务:{}", job.getKey());
scheduler.scheduleJob(job, trigger);
TimeUnit.SECONDS.sleep(10);
scheduler.shutdown(true);
_log.debug("调度器10秒后停止,shutdown入参:{},让任务调度完", true);
}
}
测试
[DEBUG] 27 一月 03:47:24.020 下午 main [priv.dengjl.my_quartz.scheduler.Example1]
调度器启动成功...
[DEBUG] 27 一月 03:47:24.033 下午 main [priv.dengjl.my_quartz.scheduler.Example1]
调度器,添加一次任务:groupName1.jobName1
[DEBUG] 27 一月 03:47:24.044 下午 DefaultQuartzScheduler_Worker-1 [priv.dengjl.my_quartz.job.EchoJob]
echo: 入门例子
[DEBUG] 27 一月 03:47:26.005 下午 DefaultQuartzScheduler_Worker-2 [priv.dengjl.my_quartz.job.EchoJob]
echo: 入门例子
[DEBUG] 27 一月 03:47:28.001 下午 DefaultQuartzScheduler_Worker-3 [priv.dengjl.my_quartz.job.EchoJob]
echo: 入门例子
[DEBUG] 27 一月 03:47:30.001 下午 DefaultQuartzScheduler_Worker-4 [priv.dengjl.my_quartz.job.EchoJob]
echo: 入门例子
[DEBUG] 27 一月 03:47:32.000 下午 DefaultQuartzScheduler_Worker-5 [priv.dengjl.my_quartz.job.EchoJob]
echo: 入门例子
[DEBUG] 27 一月 03:47:34.001 下午 DefaultQuartzScheduler_Worker-6 [priv.dengjl.my_quartz.job.EchoJob]
echo: 入门例子
[DEBUG] 27 一月 03:47:34.511 下午 main [priv.dengjl.my_quartz.scheduler.Example1]
调度器20秒后停止,shutdown入参:true,让任务调度完