quartz基本入门demo(quartz 一)

基本环境配置

新建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,让任务调度完
cron表达式

在线生成:http://cron.qqe2.com/
在这里插入图片描述