由于项目需要,需要做一个定时调度的守护进程,查了一些开源的调度框架,最重选定了quart(http://www.quartz-scheduler.org/),下载了最新的1.8.4版本,同时下了一些相关的学习资料(附在文章的附件上面)。电子资料是基于quart1.5版本的,在新的1.8.4的版本中,quartz.properties和quartz_jobs.xml的配置方式发生了改变,但是网站这方面的资料很少,于是根据quartz 1.8版本的job.xml的配置规范http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd将基于quartz 1.8的配置文件的配置规则进行一下简介。
1. 首先quartz.properties的配置中,关于XML的解析类的配置发生了改变由
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.JobInitializationPlugin
变为
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
2. 基于quartz 1.8的1_8.xsd模式规范得出 的quartz_jobs.xml的配置格式如下
<?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.ogr/xml/job_scheduling_data_1_8.xsd" version="1.8"> <pre-processing-commands> <!--在执行作业和触犯器之前执行的命令--> <delete-jobs-in-group>*</delete-jobs-in-group> <!-- 删除标示组中的所有作业,如果是“*”,则删除所有组中的作业,同时也会删除与作业有关的触犯器 --> <delete-triggers-in-group>*</delete-triggers-in-group> <!-- 删除标示组中的所有触犯器,如果是“*”,则删除所有组中的触发器 --> <delete-job> <!-- 删除指定的作业,同时也会删除与它关联的触犯器 --> <name></name> <group></group> </delete-job> <delete-trigger> <!-- 删除指定的触犯器 --> <name></name> <group></group> </delete-trigger> </pre-processing-commands> <processing-directives> <!-- 在计划作业和触发器是应遵循的命令和原则 --> <overwrite-existing-data>true or false</overwrite-existing-data> <!-- 是否复写已经存在的任务计划数据,如果为false并且ingore-duplicates非false,那么文件中同名的触发器或作业将会继续存在,则会产生错误--> <ignore-duplicates>true or false</ignore-duplicates> <!-- 如果为true,计划中的任何同名的作业/触发器将会被忽略,不会产生错误--> </processing-directives> <schedule> <job> <name>JobName</name> <group>JobGroup</group> <description></description> <job-class></job-class> <job-listener-ref></job-listener-ref> <!-- volatility,durability,recover必须按顺序设定 --> <volatility></volatility> <durability></durability> <recover></recover> <job-data-map> <!-- entry可以设定多个--> <entry> <key></key> <value></value> </entry> </job-data-map> </job> <trigger> <!-- Trigger分为simple,cron,date-interval三种类型,一个trigger中只能指定一种类型--> <simple> <name></name> <group></group> <description></description> <job-name></job-name> <job-group></job-group> <calendar-name></calendar-name> <volatility></volatility> <job-data-map> <entry> <key></key> <value></value> </entry> </job-data-map> <start-time></start-time> <end-time></end-time> <misfire-instruction></misfire-instruction> <repeat-count></repeat-count> <repeat-interval></repeat-interval> </simple> <cron> <name></name> <group></group> <description></description> <job-name></job-name> <job-group></job-group> <calendar-name></calendar-name> <volatility></volatility> <job-data-map> <entry> <key></key> <value></value> </entry> </job-data-map> <start-time></start-time> <end-time></end-time> <misfire-instruction></misfire-instruction> <cron-expression></cron-expression> <time-zone></time-zone> </cron> <date-interval> <name></name> <group></group> <description></description> <job-name></job-name> <job-group></job-group> <calendar-name></calendar-name> <volatility></volatility> <job-data-map> <entry> <key></key> <value></value> </entry> </job-data-map> <start-time></start-time> <end-time></end-time> <misfire-instruction></misfire-instruction> <repeat-interval></repeat-interval> <repeat-interval-unit></repeat-interval-unit> </date-interval> </trigger> </schedule> </job-scheduling-data>
参考资料:
http://foxswily.iteye.com/blog/683007
http://f543711700.iteye.com/blog/831619