接下来,我们用Cron表达式加配置文件的方式,写一个简单的例子
1、首先是任务类
1.1、Job001
package com.neohope.quartz.test;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
/**
* Created by Hansen
*/
public class Job001 implements Job {
private static Logger logger = LoggerFactory.getLogger(Job001.class);
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
logger.info("Job001 Executing : " + new Date());
//获取Job的参数
JobDetail jobDetail = jobExecutionContext.getJobDetail();
//String jobDesc = jobDetail.getDescription();
JobDataMap dataMap = jobDetail.getJobDataMap();
String message = dataMap.getString("JOB_MSG");
logger.info("Job001 Message is : " + message);
}
}
1.2、Job002
package com.neohope.quartz.test;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
/**
* Created by Hansen
*/
public class Job002 implements Job {
private static Logger logger = LoggerFactory.getLogger(Job002.class);
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
logger.info("Job002 Executing : " + new Date());
//获取Job的参数
JobDetail jobDetail = jobExecutionContext.getJobDetail();
//String jobDesc = jobDetail.getDescription();
JobDataMap dataMap = jobDetail.getJobDataMap();
String message = dataMap.getString("JOB_MSG");
logger.info("Job002 Message is : " + message);
}
}
2、然后是测试类
package com.neohope.quartz.test;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
/**
* Created by Hansen
*/
public class Test002 {
public void run() throws Exception {
Logger logger = LoggerFactory.getLogger(Test002.class);
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
scheduler.start();
logger.info("scheduler started");
try {
System.in.read();
} catch (Exception e) {
}
scheduler.shutdown(true);
logger.info("scheduler ended");
}
public static void main(String[] args) throws Exception {
System.setProperty("org.quartz.properties","quartzN.properties");
Test002 test = new Test002();
test.run();
}
}
3、Quartz配置文件
#============================================================================ # Configure Main Scheduler Properties #============================================================================ org.quartz.scheduler.instanceName: NeoScheduler org.quartz.scheduler.instanceId: AUTO org.quartz.scheduler.skipUpdateCheck: true #============================================================================ # Configure ThreadPool #============================================================================ org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount: 1 org.quartz.threadPool.threadPriority: 5 #============================================================================ # Configure JobStore #============================================================================ org.quartz.jobStore.misfireThreshold: 60000 org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore #org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX #org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate #org.quartz.jobStore.useProperties: false #org.quartz.jobStore.dataSource: myDS #org.quartz.jobStore.tablePrefix: QRTZ_ #org.quartz.jobStore.isClustered: false #============================================================================ # Configure Datasources #============================================================================ #org.quartz.dataSource.myDS.driver: org.postgresql.Driver #org.quartz.dataSource.myDS.URL: jdbc:postgresql://localhost/dev #org.quartz.dataSource.myDS.user: jhouse #org.quartz.dataSource.myDS.password: #org.quartz.dataSource.myDS.maxConnections: 5 #============================================================================ # 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: quartzNScheduler.xml org.quartz.plugin.jobInitializer.failOnFileNotFound: true org.quartz.plugin.jobInitializer.scanInterval: 120 org.quartz.plugin.jobInitializer.wrapInUserTransaction: false
4、任务配置文件
<?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">
<pre-processing-commands>
<!-- clear all jobs in scheduler -->
<delete-jobs-in-group>*</delete-jobs-in-group>
<!-- clear all triggers in scheduler -->
<delete-triggers-in-group>*</delete-triggers-in-group>
</pre-processing-commands>
<processing-directives>
<!-- if there are any jobs/trigger in scheduler of same name (as in this file), overwrite them -->
<overwrite-existing-data>true</overwrite-existing-data>
<!-- if there are any jobs/trigger in scheduler of same name (as in this file),
and over-write is false, ignore them rather then generating an error -->
<ignore-duplicates>false</ignore-duplicates>
</processing-directives>
<schedule>
<job>
<name>Job001</name>
<group>JGroup001</group>
<job-class>com.neohope.quartz.test.Job001</job-class>
<job-data-map>
<entry>
<key>JOB_MSG</key>
<value>Hi Job001</value>
</entry>
</job-data-map>
</job>
<trigger>
<simple>
<name>Trigger001</name>
<group>TGroup001</group>
<job-name>Job001</job-name>
<job-group>JGroup001</job-group>
<!--start-time>2010-02-09T10:15:00</start-time-->
<!--end-time>2012-02-09T12:26:00.0</end-time-->
<misfire-instruction>MISFIRE_INSTRUCTION_SMART_POLICY</misfire-instruction>
<repeat-count>3</repeat-count>
<repeat-interval>1000</repeat-interval>
</simple>
</trigger>
<job>
<name>Job002</name>
<group>JGroup002</group>
<description>Job002</description>
<job-class>com.neohope.quartz.test.Job002</job-class>
<job-data-map>
<entry>
<key>JOB_MSG</key>
<value>Hi Job002</value>
</entry>
</job-data-map>
</job>
<trigger>
<cron>
<name>Trigger002</name>
<group>TGroup002</group>
<job-name>Job002</job-name>
<job-group>JGroup002</job-group>
<!--start-time>2010-02-09T12:26:00.0</start-time-->
<!--end-time>2012-02-09T12:26:00.0</end-time-->
<misfire-instruction>MISFIRE_INSTRUCTION_SMART_POLICY</misfire-instruction>
<cron-expression>0/10 * * * * ? *</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
5、大家运行一下看看吧