2011-11-03 64 views
2

我正在调查Quartz.NET的调度任务。其中一个要求是我希望能够将多个作业安排到同一个触发器(基本上共享一个触发器)。但是,Quartz.NET不允许这样做。我还注意到,在Windows任务计划程序中,您也不能共享触发器。为什么我不能在Quartz.net中安排多个作业到同一个触发器?

将多个作业映射到相同的触发器似乎是一个常见要求。我的问题是,为什么这不被允许?有没有理由不把多个工作安排到同一个触发器?

回答

2

我从来没有想到它,它看起来像一个吸引人的想法。但我认为,这只是一个猜测,它无法完成的原因与可管理性和资源有关。

  • 可管理:作业(或任务)是在调度管理的主要实体。它可以有多个触发器。这些触发器应该(最好)不会相互竞争。假设您可以在作业之间共享触发器,并且您想更改触发器。很难判断您的更改是否会影响受其影响的任何其他作业的任何其他触发器。我不认识Quartz的设计师,但这可能是拒绝共享触发器的原因。它会引入横向管理层。

  • 资源:共享触发器将在同一时刻促进作业的执行。 Quartz的线程池几乎是无限的,但机器资源显然不是。当不同触发器在同一时刻触发,您可以通过设置其优先级进行一些调整。然而,当一次触发多次触发时,这种可能性被消除(或者应该发生一些自动调整)。

3

在Quartz中,您可以将多个触发器分配给同一个作业,因为某些时间表不能由单个触发器表示。 大概石英不支持反向连接(每次触发工作),因为:

  1. 这将增加复杂性,以现有的代码已经允许每个作业多个触发器。

  2. 每个触发器可以通过创建一个复合作业轻松完成多个作业,其目的是运行其他作业。

相关问题