2011-11-03 68 views
2

我正在調查Quartz.NET的調度任務。其中一個要求是我希望能夠將多個作業安排到同一個觸發器(基本上共享一個觸發器)。但是,Quartz.NET不允許這樣做。我還注意到,在Windows任務計劃程序中,您也不能共享觸發器。爲什麼我不能在Quartz.net中安排多個作業到同一個觸發器?

將多個作業映射到相同的觸發器似乎是一個常見要求。我的問題是,爲什麼這不被允許?有沒有理由不把多個工作安排到同一個觸發器?

回答

2

我從來沒有想到它,它看起來像一個吸引人的想法。但我認爲,這只是一個猜測,它無法完成的原因與可管理性和資源有關。

  • 可管理:作業(或任務)是在調度管理的主要實體。它可以有多個觸發器。這些觸發器應該(最好)不會相互競爭。假設您可以在作業之間共享觸發器,並且您想更改觸發器。很難判斷您的更改是否會影響受其影響的任何其他作業的任何其他觸發器。我不認識Quartz的設計師,但這可能是拒絕共享觸發器的原因。它會引入橫向管理層。

  • 資源:共享觸發器將在同一時刻促進作業的執行。 Quartz的線程池幾乎是無限的,但機器資源顯然不是。當不同觸發器在同一時刻觸發,您可以通過設置其優先級進行一些調整。然而,當一次觸發多次觸發時,這種可能性被消除(或者應該發生一些自動調整)。

3

在Quartz中,您可以將多個觸發器分配給同一個作業,因爲某些時間表不能由單個觸發器表示。 大概石英不支持反向連接(每次觸發工作),因爲:

  1. 這將增加複雜性,以現有的代碼已經允許每個作業多個觸發器。

  2. 每個觸發器可以通過創建一個複合作業輕鬆完成多個作業,其目的是運行其他作業。

相關問題