1、介紹
今天是這個系列的最後一篇文章了,主要功能說的差很少了,咱們來看看其餘相關的內容。話說回來,雖然是這個系列的最後一篇文章,並不表明Quartz的東西就這麼點,學習階段,就這些了,若是之後有了使用心得,再增長進來。廢話少說,開始咱們今天的學習吧。
2、Quartz.Net其餘功能
Quartz以模塊化方式構建,所以要使其運行,須要將幾個組件「拼接」在一塊兒。 幸運的是,有一些助手能夠實現這一目標。
在Quartz能夠完成其工做以前須要配置的主要組件是:
1)、ThreadPool
2)、JobStore
3)、數據源(若有必要)
4)、調度程序自己
自從引入基於任務的做業以來,線程池已經發生了很大變化。 TODO文檔更多
JobStores 和 DataSrouces 在本教程的第9課中進行了討論。 值得注意的是,全部 JobStores 都實現了 IJobStore 接口 - 若是其中一個捆綁的JobStore不能知足您的需求,那麼您能夠建立本身的。
最後,您須要建立Scheduler實例。 須要爲Scheduler自己指定一個名稱並交給JobStore和ThreadPool的實例。
一、StdSchedulerFactory
StdSchedulerFactory 是 ISchedulerFactory 接口的實現。 它使用一組屬性(NameValueCollection)來建立和初始化Quartz Scheduler。 這些屬性一般存儲在文件中並從文件中加載,但也能夠由程序建立並直接傳遞給工廠。 只需在工廠類實例上調用 getScheduler() 就能夠生成調度程序,初始化它(及其ThreadPool,JobStore和DataSources),並返回其公共接口的句柄。
Quartz發行版的「docs / config」目錄中有一些示例配置(包括屬性的描述)。 您能夠在Quartz文檔的「參考」部分下的「配置」手冊中找到完整的文檔。
二、DirectSchedulerFactory
DirectSchedulerFactory 是另外一個 SchedulerFactory 實現。 對於那些但願以更加程序化的方式建立 Scheduler 實例的人來講,它很是有用。 因爲如下緣由,一般不鼓勵使用它:(1)它要求用戶更好地理解他們正在作什麼,以及(2)它不容許聲明性配置-或者換句話說,您最終硬編碼了調度程序的全部設置。
三、Logging
Quartz.NET 使用 LibLob 庫來知足其全部日誌記錄需求。 Quartz 不會產生不少日誌信息——一般只是在初始化期間產生一些信息,而後在 Jobs 執行期間只產生關於嚴重問題的消息。爲了「優化」日誌設置(好比輸出量和輸出位置),您須要實際配置所選擇的日誌框架,由於 LibLog 主要將工做委託給更成熟的日誌框架,如log4net、serilog等。
四、高級(企業)功能
集羣:集羣目前只適用於 AdoJobstore(JobStoreTX)。功能包括負載平衡和做業故障轉移(若是JobDetail的「請求恢復」標誌設置爲true)。
經過將「quartz.jobStore.clustered」屬性設置爲「true」來啓用羣集。 集羣中的每一個實例都應使用相同的quartz屬性副本。 例外狀況是使用相同的屬性,具備如下容許的例外:不一樣的線程池大小,以及「quartz.scheduler.instanceId」屬性的不一樣值。 集羣中的每一個節點必須具備惟一的instanceId,經過將「AUTO」做爲此屬性的值放置,能夠輕鬆完成(不須要不一樣的屬性文件)。
永遠不要在不一樣的機器上運行羣集,除非它們的時鐘使用某種形式的時間同步服務(守護進程)進行同步,這些服務按期運行(時鐘必須在彼此的秒內)。 若是您不熟悉如何執行此操做,請訪問http://www.boulder.nist.gov/timefreq/service/its.htm。
永遠不要針對運行任何其餘實例的同一組表啓動非羣集實例。 您可能會收到嚴重的數據損壞,而且確定會遇到不正常的行爲。
五、Quartz.Net 其餘功能
1)、Plug-Ins(插件)
Quartz提供了一個接口(ISchedulerPlugin),用於插入附加功能。
Quartz.Plugins 命名空間中能夠找到 Quartz 附帶的以提供各類實用功能的插件。 它們提供的功能包括在調度程序啓動時自動調度做業,記錄做業歷史記錄和觸發事件,以及確保調度程序在虛擬機退出時乾淨地關閉。
2)、JobFactory
觸發器觸發時,與其關聯的Job將經過Scheduler上配置的JobFactory實例化。 默認的JobFactory只是激活做業類的新實例。 您可能但願建立本身的JobFactory實現來完成諸如讓應用程序的IoC或DI容器生成/初始化做業實例之類的事情。
請參閱 IJobFactory 接口和相關的 Scheduler.SetJobFactory(fact)方法。
3)、‘Factory-Shipped’ Jobs(工廠預裝的一些有用的任務做業)
Quartz還提供了許多實用工具,您能夠在應用程序中使用它們來執行諸如發送電子郵件和調用遠程對象之類的操做。 能夠在Quartz.Jobs命名空間中找到這些開箱即用的做業。
3、總結
好了,今天就寫到這裏了。這個系列的內容先暫停吧,之後有好的內容再更新了。仍是老規矩,我把英文原文地址發出來,英文好的能夠直接看英文,理解的會更好。地址以下:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/configuration-resource-usage-and-scheduler-factory.html,這篇文章是起始文章,我今天寫的這篇文章把後面的全部的內容寫在了一塊兒。
不忘初心,繼續努力。html