3

我对 Quartz Scheduler 工作线程有疑问。我创建了一个调度程序任务,它将每 3 小时执行一次。我创建了一份工作和一个触发器。当我执行这个调度程序时,我观察到一个奇怪的行为,同一个作业被分配给了 10 个工作线程。这 10 个工作线程执行相同的代码 10 次。我该如何解决这个问题...?

谁能帮我解决这个问题。我对 Quartz Scheduler 很陌生。

提前感谢,阿马尔

4

2 回答 2

2

来自org.quartz.threadPool.threadCount标题下的石英手册

如果您只有几个每天触发几次的作业,那么 1 个线程就足够了!如果您有数以万计的作业,每分钟触发许多作业,那么您可能希望线程数更像 50 或 100(这在很大程度上取决于您的作业执行的工作的性质,以及您的系统资源!)。

这就是 threadCount 可以改变的方式。

<configSections>
    <section name="quartz" type="System.Configuration.NameValueSectionHandler,System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

<quartz>
    <add key="quartz.scheduler.instanceName" value="ServerScheduler" />
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
    <add key="quartz.threadPool.threadCount" value="80" />
    <add key="quartz.threadPool.threadPriority" value="2" />
    <add key="quartz.jobStore.misfireThreshold" value="60000" />
    <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
</quartz>
于 2015-09-17T17:49:48.983 回答
1

首先检查您的 cronExpression,例如 "0 0 */3 * *"

或更改您的线程数。

<property name="quartzProperties">
    <map>
        <entry key="org.quartz.threadPool.threadCount" value="10"/>
    </map>
</property>
于 2014-03-07T07:00:40.567 回答