纯净版quartz定时任务【maven】

Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。
简单的介绍一下下面的Quartz项目包括如何调度其他的类。
搭建定时任务服务
首先新建一个maven项目
然后配置pom文件,我们需要引如下jar包依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
 
然后pom文件中配置jdk及tomcat插件
<plugins>
<!-- Tomcat7 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.artifactId}</path>
<port>8083</port>
<uriEncoding>UTF-8</uriEncoding>
<url>http://localhost:8083/</url>
<server>tomcat7</server>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
 
然后我们需要新建一个properties和xml文件
大体服务结构如下:
properties内容如下:
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
#============================================================================
# Configure Plugins
#============================================================================
#org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction =false
 
#\u9ED8\u8BA4\u4F1A\u8054\u7F51\u68C0\u67E5\u662F\u5426\u6709\u66F4\u65B0\uFF0C\u8FD8\u662Fskip\u4E3A\u597D
org.quartz.scheduler.skipUpdateCheck =true
 
然后配置quartz_dataxml
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">
<schedule>
<job>
<name>DemoJob</name>
<group>JobGroup</group>
<job-class>job.QuartzDemoJob</job-class>
</job>
<trigger>
<cron>
<name>DemoTrigger</name>
<group>triggerGroup</group>
<job-name>DemoJob</job-name>
<job-group>JobGroup</job-group>
<cron-expression>0/3 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
<schedule>
<job>
<name>TestJob</name>
<group>TestGroup</group>
<job-class>job.QuartzTestJob</job-class>
</job>
<trigger>
<cron>
<name>DemoTrigger</name>
<!-- <group>triggerGroup</group> -->
<job-name>TestJob</job-name>
<job-group>TestGroup</job-group>
<cron-expression>0/5 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
 
然后创建俩个job类
package job;
 
import java.util.Date;
 
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
 
public class QuartzDemoJob implements Job {
 
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println(new Date() + "FXP");
}
}
 
package job;
 
import java.util.Date;
 
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
 
public class QuartzTestJob implements Job {
 
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println(new Date() + "HL");
}
}
 
最后再在web.xml配置如下内容即可:
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-class>
org.quartz.ee.servlet.QuartzInitializerServlet
</servlet-class>
<init-param>
<param-name>config-file</param-name>
<param-value>quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
 
然后启动就可以看到效果了,FXP每三秒输出一下,而HL每五秒输出一下。【这个秒数在quartz_data.xml中配置】

猜你喜欢

转载自blog.csdn.net/zdx1515888659/article/details/79137007