初识Quartz之第一个Quartz实例

xiaoxiao2021-02-28  33

        根据前面的博文对Quartz的三大组件:Job、Trigger、Scheduler分别进行了介绍,本文则利用创建三大组件创建一个Quartz的实例,来了解Quartz框架的工作流程。

1.创建项目

        首先利用eclipse建立一个Maven项目,选择图中所示的Filter选项。并继续完成命名等,创建一个项目。

        创建完成后,项目如图所示:

2.pom文件

        根据Quartz框架所需要的jar包,将其写到pom文件中,便于统一生成,pom配置文件如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.carson</groupId> <artifactId>FirstQuarz</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>FirstQuarz</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.3</version> </dependency> </dependencies> </project>

3.Job实现类

        三大组件之一就是Job组件,其中需要实现Job接口,而Job接口中只有一个execute()方法,需要实现execute()方法,具体如下所示:

import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class MyJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { //打印当前的执行时间,格式为yyyy-MM-dd HH:mm:ss // 编写具体的业务逻辑。 Date date=new Date(); SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式 System.out.println("当前时间为:"+sf.format(date)); System.out.println("Hello World!"); } }

4.Scheduler类

         该类用于作任务调度的,首先将Job实现类绑定到JobDetail对象中,然后创建Trigger对象,最后创建Scheduler对象并将JobDetail对象和Trigger对象绑定到Scheduler对象中。通过以上步骤,实现调度器对Job任务的调度,并通过触发器来设置任务触发始末以及频率。

import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class MyScheduler { public static void main(String[] args) throws SchedulerException { //创建一个JobDetail实例,将该实例与MyJob Class绑定。 JobDetail jobDetail=JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build(); //创建一个Trigger实例,定义该Job立即执行,并且每隔两秒钟重复一次, Trigger trigger=TriggerBuilder .newTrigger() .withIdentity("myTrigger","group1") .startNow() .withSchedule(SimpleScheduleBuilder .simpleSchedule() .withIntervalInSeconds(5) .repeatForever()) .build(); SchedulerFactory sf=new StdSchedulerFactory(); Scheduler scheduler=sf.getScheduler(); scheduler.start(); Date date=new Date(); SimpleDateFormat sfd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式 //System.out.println("当前时间为:"+sfd.format(date)); scheduler.scheduleJob(jobDetail, trigger); } }

        最后运行程序,得到如下结果:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 当前时间为:2018-04-09 17:04:55 Hello World! 当前时间为:2018-04-09 17:04:59 Hello World! 当前时间为:2018-04-09 17:05:04 Hello World! 当前时间为:2018-04-09 17:05:09 Hello World! 当前时间为:2018-04-09 17:05:14 Hello World! 当前时间为:2018-04-09 17:05:19 Hello World! 当前时间为:2018-04-09 17:05:24 Hello World! 当前时间为:2018-04-09 17:05:29 Hello World! 当前时间为:2018-04-09 17:05:34 Hello World! 当前时间为:2018-04-09 17:05:39 Hello World! 当前时间为:2018-04-09 17:05:44 Hello World! 当前时间为:2018-04-09 17:05:49 Hello World! 。。。。。。        由于设置的是一直调度不停歇,所以会一直按着间隔时间段触发任务。
转载请注明原文地址: https://www.6miu.com/read-2629751.html

最新回复(0)