前言

上一节我们学习了Quartz的基本用法

这一节学习通过XML配置的形式来执行任务

这一节主要认识一些属性,为下一步打基础

代码下载:链接:http://pan.baidu.com/s/1ge6jFDD 密码:gaii

 我们在安装了Quartz后,会在目录下生成job_scheduling_data_2_0.xsd文件,此文件是XML配置智能提示用,如图所示:有利于我们编写XMLiOS培训,Swift培训,苹果开发培训,移动开发培训

 实现

虽然有了智能提示,但是我们实际的配置也是照着模板来套入而已,下面来看一个XML

iOS培训,Swift培训,苹果开发培训,移动开发培训

<?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>

iOS培训,Swift培训,苹果开发培训,移动开发培训

解读一下这个XML表达的意思:

  1. 在类库QuartzTest下的命名空间QuartzTest下的类HelloJob是要执行的C#类方法,同样继承IJob

  2. 开始日期:2017-1-1 结束日期2020-5-4

  3. 执行100次

  4. 每一秒执行一次

也是很容易就看得懂!

同样的您也可以把Cron表达式配置在Trigger节点

iOS培训,Swift培训,苹果开发培训,移动开发培训

<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>

iOS培训,Swift培训,苹果开发培训,移动开发培训

 

调用方式:

同样的在Main入口

iOS培训,Swift培训,苹果开发培训,移动开发培训

            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();

iOS培训,Swift培训,苹果开发培训,移动开发培训

NameValueCollection 属性比较固定一般不需要更改,只需要指定XML的路径即可

iOS培训,Swift培训,苹果开发培训,移动开发培训

附录

属性的解析,有兴趣的了解一下,不清楚也没有关系,基本配置都是通用的,除非特别情况,我们再回过头来研究

iOS培训,Swift培训,苹果开发培训,移动开发培训

+. 开始,你能够定制如何自动生成实例 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 ) 更新后提交。默认值为

iOS培训,Swift培训,苹果开发培训,移动开发培训

 

作者:YmNets
出处:http://ymnets.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

http://www.cnblogs.com/ymnets/p/6242407.html