纯净版quartz定时任务【maven】,quartzmaven


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中配置】

相关内容