Quartz.net能否在配置文件更改时重新配置作业?

11

我正在使用Quartz.Net进行概念验证。 这是一个相当简单的调度任务,我的唯一要求是在不需要重新配置Quartz的情况下重启服务。

这是测试代码。

        var factory = new StdSchedulerFactory();
        var scheduler = factory.GetScheduler();
        scheduler.Start();

在 app.config 文件中的相关数据

  <quartz>
<add key="quartz.scheduler.instanceName" value="QuartzScheduler" />
<!-- Configure Thread Pool -->
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.threadPool.threadPriority" value="Normal" />
<!-- Configure Job Store -->
<add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
<add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.JobInitializationPlugin, Quartz" />
<add key="quartz.plugin.xml.fileNames" value="quartz.config" />

我的工作配置文件

    <?xml version="1.0" encoding="UTF-8"?>
<quartz xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                version="1.0"
                overwrite-existing-jobs="true">

  <job>
    <job-detail>
      <name>jobName1</name>
      <group>jobGroup1</group>
      <description>jobDesciption1</description>
      <job-type>Jobs.MyJob, Jobs</job-type>
      <volatile>false</volatile>
      <durable>true</durable>
      <recover>false</recover>
    </job-detail>

    <trigger>
      <cron>
        <name>cronName1</name>
        <group>cronGroup1</group>
        <description>CronTriggerDescription</description>
        <job-name>jobName1</job-name>
        <job-group>jobGroup1</job-group>
        <cron-expression>0 0/1 * * * ?</cron-expression>
      </cron>

    </trigger>
  </job>
</quartz>

定时任务表达式有效,作业每分钟执行一次。但是如果我将表达式更改为0 0/5 * * *?在运行服务时,它仍然每分钟触发。那么有没有一种方法可以配置Quartz.net以便它监听配置文件的更改?

1个回答

16

为插件添加扫描间隔定义(秒):

<add key="quartz.plugin.xml.scanInterval" value="10" />

之后该插件将定期检查文件更改。


抱歉,样本被隐藏了,因为它没有被包围在代码标签中。 - Marko Lahma
太棒了,谢谢!我现在可以在调试模式下看到配置已经重新解析,它还说“不覆盖现有作业”。触发时间没有改变吗? - Anders
mmw109的评论:“你在哪里放置'overwriteExisting Jobs'。我正在使用来自sourceforge的示例配置,但它没有接受更改(例如,我编辑作业名称,看到文件扫描作业启动,但旧作业名称仍在运行,没有新名称)。” - Peter O.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接