【问题标题】:Quartz Jobs overlapping石英作业重叠
【发布时间】:2016-02-18 08:21:21
【问题描述】:

我有几个石英 (2.2) 作业正在运行。假设一个每 5 秒运行一次,另一个每 10 分钟运行一次。

我不希望同时执行 2 个作业。我看过这个

DisallowConcurrentExecution

但这仅适用于来自同一实例的作业,但我通常不希望(任何实例的)两个作业重叠。

编辑: 所有作业都使用一个数据库,这就是为什么它们不能同时运行很重要的原因。每项工作都有不同的事情要做。

【问题讨论】:

  • 一台服务器上有两个实例?集群?多少个调度程序实例(集群中应该只有 1 个)?缺少很多信息,没有这些信息很难回答问题。
  • 好吧,我对 Quartz 还是很陌生,很抱歉。 Quartz 在一台服务器上的 Java 应用程序中运行。没有聚类。每个作业都有自己的触发器,因为作业有不同的运行时间(如每 5 秒、每小时等一次)(请参阅我的编辑)
  • 那么为什么需要运行两个实例呢?
  • 也许我误会了你。但据我了解,一项工作有一种执行方法。这是这份工作所独有的。我的情况。我有不同的工作,在数据库中做不同的汇总。这些是完全不同的任务..
  • 这两个工作之间是否有任何优先级或无关?例如,在同时执行的情况下,您只需要 10 分钟。要运行的作业。

标签: java quartz-scheduler


【解决方案1】:

最简单的方法是配置底层线程池使用一个线程,这样就可以达到你的目的。将以下属性添加到您的 quartz.properties 配置文件中:

org.quartz.threadPool.threadCount

可用的线程数 作业的并发执行。您可以指定任何正整数, 尽管只有 1 到 100 之间的数字是实用的。如果你只 有一些每天触发几次的工作,那么一个线程是 很多。如果你有数以万计的工作岗位,每个人都会解雇很多人 分钟,那么您希望线程数更像 50 或 100(这高度 取决于您的工作所从事的工作的性质,以及您的 系统资源)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2019-09-08
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多