前言
上一节我们学习了Quartz的基本用法
这一节学习通过XML配置的形式来执行任务
这一节主要认识一些属性,为下一步打基础
代码下载:链接:http://pan.baidu.com/s/1ge6jFDD 密码:gaii
我们在安装了Quartz后,会在目录下生成job_scheduling_data_2_0.xsd文件,此文件是XML配置智能提示用,如图所示:有利于我们编写XML
实现
虽然有了智能提示,但是我们实际的配置也是照着模板来套入而已,下面来看一个XML
<?xml version="1.0" encoding="UTF-8"?><job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> <processing-directives> <overwrite-existing-data>true</overwrite-existing-data> </processing-directives> <schedule> <job> <name>jobName1</name> <group>jobGroup1</group> <description>jobDesciption1</description> <job-type>QuartzTest.HelloJob, QuartzTest</job-type> <durable>true</durable> <recover>false</recover> <job-data-map> <!--参数--> <entry> <key>key0</key> <value>value0</value> </entry> <entry> <key>key1</key> <value>value1</value> </entry> <entry> <key>key2</key> <value>value2</value> </entry> </job-data-map> </job> <trigger> <simple> <name>simpleName</name> <group>simpleGroup</group> <description>SimpleTriggerDescription</description> <job-name>jobName1</job-name> <job-group>jobGroup1</job-group> <start-time>2017-1-1 00:00:01</start-time> <end-time>2020-05-04 00:00:00</end-time> <misfire-instruction>SmartPolicy</misfire-instruction> <repeat-count>100</repeat-count> <!--执行100次--> <repeat-interval>1000</repeat-interval> <!--间隔1秒一次--> </simple> </trigger> </schedule></job-scheduling-data>
解读一下这个XML表达的意思:
在类库QuartzTest下的命名空间QuartzTest下的类HelloJob是要执行的C#类方法,同样继承IJob
开始日期:2017-1-1 结束日期2020-5-4
执行100次
每一秒执行一次
也是很容易就看得懂!
同样的您也可以把Cron表达式配置在Trigger节点
<trigger> <cron> <name>JobTrigger</name> <group>JobTriggerGroup</group> <job-name>ResourcesJob</job-name> <job-group>ResourcesGroup</job-group> <cron-expression>0 */1 * * * ?</cron-expression> </cron> </trigger>
调用方式:
同样的在Main入口
var properties = new NameValueCollection { ["quartz.scheduler.instanceName"] = "XmlConfiguredInstance", ["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz", ["quartz.threadPool.threadCount"] = "5", ["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz", ["quartz.plugin.xml.fileNames"] = "~/quartz_jobs.xml" }; ISchedulerFactory sf = new StdSchedulerFactory(properties); IScheduler sched = sf.GetScheduler(); // we need to add calendars manually, lets create a silly sample calendar var dailyCalendar = new DailyCalendar("00:01", "23:59"); dailyCalendar.InvertTimeRange = true; sched.AddCalendar("cal1", dailyCalendar, false, false); sched.Start();
NameValueCollection 属性比较固定一般不需要更改,只需要指定XML的路径即可
附录
属性的解析,有兴趣的了解一下,不清楚也没有关系,基本配置都是通用的,除非特别情况,我们再回过头来研究
+. 开始,你能够定制如何自动生成实例 ID。见 instanceIDGenerator.. 中置入一个 名-值 对表示的字符串值。(见 Scheduler.getContext() )。因此,比如设置了 org.quartz.context.key.MyEmail = myemail@somehost.com 就相当于执行了 scheduler.getContext().put(/UserTransaction ,这几乎能工作于所有的应用服务器中。Websphere 用户也许需要设置这个属性为 jta/usertransaction 。这个属性仅用于 Quartz 配置使用 JobStoreCMT 的情况,并且 org.quartz.scheduler.wrapJobExecutionInUserTransaction 被设定成了 。这个事物将在 Job 的 execute 方法完成和 JobDataMap (假如是一个 StatefulJob ) 更新后提交。默认值为
作者:YmNets
出处:http://ymnets.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
http://www.cnblogs.com/ymnets/p/6242407.html