我对 Quartz Scheduler 工作线程有疑问。我创建了一个调度程序任务,它将每 3 小时执行一次。我创建了一份工作和一个触发器。当我执行这个调度程序时,我观察到一个奇怪的行为,同一个作业被分配给了 10 个工作线程。这 10 个工作线程执行相同的代码 10 次。我该如何解决这个问题...?
谁能帮我解决这个问题。我对 Quartz Scheduler 很陌生。
提前感谢,阿马尔
我对 Quartz Scheduler 工作线程有疑问。我创建了一个调度程序任务,它将每 3 小时执行一次。我创建了一份工作和一个触发器。当我执行这个调度程序时,我观察到一个奇怪的行为,同一个作业被分配给了 10 个工作线程。这 10 个工作线程执行相同的代码 10 次。我该如何解决这个问题...?
谁能帮我解决这个问题。我对 Quartz Scheduler 很陌生。
提前感谢,阿马尔
来自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>
首先检查您的 cronExpression,例如 "0 0 */3 * *"
或更改您的线程数。
<property name="quartzProperties">
<map>
<entry key="org.quartz.threadPool.threadCount" value="10"/>
</map>
</property>