JobDataMap用于Quartz作业xml中的触发器

时间:2012-10-15 15:32:06

标签: quartz.net

我遇到了在Quartz中为触发器设置作业数据映射的问题。我知道它可以用语法编写,但我需要在xml作业文件中进行。但是,每当我尝试将其添加到触发器时,它都会说作业数据映射无效。查看作业文件的XSD(http://www.quartz-scheduler.org/xml/job_scheduling_data_2_0.xsd),它看起来应该是 cron 标记的有效子项,因为它继承 abstractTriggerType ,但我的应用程序不会接受它。

这是我的代码。我正在使用Quartz.Net 2.0

<job>
  <name>StagingJob</name>
  <job-type>MyAssembly.StagingJob, MyAssembly</job-type>
  <durable>true</durable>
  <recover>false</recover>
</job>
<trigger>
  <cron>
    <name>StagingTrigger</name>
    <job-name>StagingJob</job-name>
    <misfire-instruction>SmartPolicy</misfire-instruction>
    <job-data-map>
      <entry>
        <key>end-time-cron</key>
        <value>0 59 * * * ?</value>
      </entry>
      <entry>
        <key>thread-count</key>
        <value>3</value>
      </entry>
    </job-data-map>
    <cron-expression>0 1 * * * ?</cron-expression>
  </cron>       
</trigger>

通过xml将作业数据添加到触发器的正确​​方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试删除 misfire-instruction 元素,无论如何智能策略是默认值。如果你想保留元素,它应该在job-data-map元素之后。 Quartz对XML元素的排序非常严格。

如果您将VS属性窗口中的Schemas设置为分发中包含的XSD文件,Visual Studio还应该为您提供智能感知。