Quartz.NET 项目地址 http://quartznet.sourceforge.net/
Quartz.NET 2.0 学习笔记(1) :Quartz.NET简介
Quartz.NET 2.0 学习笔记(2) :和1.0的几点不同
Quartz.NET 2.0 学习笔记(3) :通过配置文件实现任务调度
Quartz.NET 2.0 学习笔记(4) :cron表达式
Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度
Quartz.NET 2.0 可以很方便的通过配置的xml文件方式实现灵活的任务调度配置(1.0版本就已经支持了,只是配置文件格式有些变化)
默认的quartz任务配置文件为quartz_jobs.xml,在quartz服务的根目录下,可以通过quartz.config中quartz.plugin.xml.fileNames = ~/quartz_jobs.xml进行设置
默认quartz.config文件结构如下
1 # You can configure your scheduler in either <quartz> configuration section 2 # or in quartz properties file 3 # Configuration section has precedence 4 5 quartz.scheduler.instanceName = ServerScheduler 6 7 # configure thread pool info 8 quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz 9 quartz.threadPool.threadCount = 10 10 quartz.threadPool.threadPriority = Normal 11 12 # job initialization plugin handles our xml reading, without it defaults are used 13 quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz 14 quartz.plugin.xml.fileNames = ~/quartz_jobs.xml 15 16 # export this server to remoting context 17 quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz 18 quartz.scheduler.exporter.port = 555 19 quartz.scheduler.exporter.bindName = QuartzScheduler 20 quartz.scheduler.exporter.channelType = tcp 21 quartz.scheduler.exporter.channelName = httpQuartz
首先看一下简单的quartz_jobs.xml示例
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!-- This file contains job definitions in schema version 2.0 format --> 4 5 <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> 6 7 <processing-directives> 8 <overwrite-existing-data>true</overwrite-existing-data> 9 </processing-directives> 10 11 <schedule> 12 13 <job> 14 <name>sampleJob</name> 15 <group>sampleGroup</group> 16 <description>Sample job for Quartz Server</description> 17 <job-type>Quartz.Server.SampleJob, Quartz.Server</job-type> 18 <durable>true</durable> 19 <recover>false</recover> 20 </job> 21 <trigger> 22 <simple> 23 <name>sampleSimpleTrigger</name> 24 <group>sampleSimpleGroup</group> 25 <description>Simple trigger to simply fire sample job</description> 26 <job-name>sampleJob</job-name> 27 <job-group>sampleGroup</job-group> 28 <misfire-instruction>SmartPolicy</misfire-instruction> 29 <repeat-count>-1</repeat-count> 30 <repeat-interval>10000</repeat-interval> 31 </simple> 32 </trigger> 33 34 <job> 35 <name>CommissionJob</name> 36 <group>CommissionJob</group> 37 <description>Sample job for Quartz Server</description> 38 <job-type>Settlement.Jobs.CommissionJob, Settlement.Jobs</job-type> 39 <durable>true</durable> 40 <recover>false</recover> 41 </job> 42 <trigger> 43 <cron> 44 <name>sampleSimpleTrigger2</name> 45 <group>sampleSimpleTrigger2</group> 46 <job-name>sampleJob2</job-name> 47 <job-group>sampleGroup2</job-group> 48 <cron-expression>0/10 * * * * ?</cron-expression> 49 </cron> 50 </trigger> 51 </schedule> 52 </job-scheduling-data>
job-scheduling-data 为跟节点不再解释
processing-directives这个节点官方给的示例中就存在,干啥用的没有深入了解,保持默认配置即可
schedule任务调度集合可以配置多个但貌似只有第一个的配置起作用,如何让多个schedule同时起作用希望知道的童鞋告诉下,不胜感激。所有的job和trigger均放在这个节点下面
job 任务,其实就是1.x版本中的<job-detail>,这个节点是用来定义每个具体的任务的,多个任务请创建多个job节点即可
trigger 任务触发器,用于定义使用何种方式出发任务(job),同一个job可以定义多个trigger ,多个trigger 各自独立的执行调度,每个trigger 中必须且只能定义一种触发器类型(calendar-interval、simple、cron)
calendar-interval 一种触发器类型,使用较少,此处略过
simple 简单任务的触发器,可以调度用于重复执行的任务
cron复杂任务触发器--使用cron表达式定制任务调度(强烈推荐)
了解了Quartz.NET 2.0的quartz_jobs.xml配置后就可以在项目中引用Quartz.dll文件然后实现IJob接口,根据实际项目中的需要灵活配置quartz_jobs,不需要再进行额外的开发,实现灵活的多任务调度,需要注意的是修改了quartz_jobs.xml文件后,quartz服务默认不会重新加载该文件,若要让修改后的文件生效需要重启下服务才行,另外start-time属性请一定慎用,若实在需要可以在使用完成后立即删除掉该属性否则可能造成很严重的后果(亲身经历血的教训,呵呵)
介绍的比较肤浅,本身也没有过深入的研究,只是根据日常使用经验自己摸索出来的,整理了一下应付日常简单应用足以
下一篇介绍下如何使用Quartz创建自己的Windows服务,以及实例实现IJob接口及根据quartz_jobs.xml实现任务调度
PS:
官网(http://quartznet.sourceforge.net/)下载的代码服使用Topshelf创建的,支持跨平台创建服务
使用方法:控制台下,安装服务 Quartz.Server.exe install 卸载服务 Quartz.Server.exe uninstall
功能很强大,使用起来很方便,当然了肯定不支持使用sc命令创建服务了,但很多时候我们并不需要灵活和强大的东西,简简单单,够用就中,对于我来说用普通的windows服务足以