【问题标题】:Quartz Scheduler Worker Threads IssueQuartz 调度程序工作线程问题
【发布时间】:2013-09-16 19:18:30
【问题描述】:

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

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

提前感谢, 阿马尔

【问题讨论】:

  • 你能发布一些你的代码吗?

标签: quartz-scheduler


【解决方案1】:

来自 org.quartz.threadPool.threadCount 标题下的quartz manual

如果您只有几个每天触发几次的作业,那么 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>

【讨论】:

    【解决方案2】:

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

    或者改变你的线程数。

    <property name="quartzProperties">
        <map>
            <entry key="org.quartz.threadPool.threadCount" value="10"/>
        </map>
    </property>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多