Quartz.Net進階之七:QuartzNet其他的功能簡述


        一、介紹

            今天是這個系列的最后一篇文章了,主要功能說的差不多了,我們來看看其他相關的內容。話說回來,雖然是這個系列的最后一篇文章,並不代表Quartz的東西就這么點,學習階段,就這些了,如果以后有了使用心得,再增加進來。廢話少說,開始我們今天的學習吧。

        二、Quartz.Net其他功能

            Quartz以模塊化方式構建,因此要使其運行,需要將幾個組件“拼接”在一起。 幸運的是,有一些助手可以實現這一目標。


            在Quartz可以完成其工作之前需要配置的主要組件是:

                1)、ThreadPool

                2)、JobStore

                3)、數據源(如有必要)

                4)、調度程序本身


            自從引入基於任務的作業以來,線程池已經發生了很大變化。 TODO文檔更多

            JobStores 和 DataSrouces 在本教程的第9課中進行了討論。 值得注意的是,所有 JobStores 都實現了 IJobStore 接口 - 如果其中一個捆綁的JobStore不能滿足您的需求,那么您可以創建自己的。
            
            最后,您需要創建Scheduler實例。 需要為Scheduler本身指定一個名稱並交給JobStore和ThreadPool的實例。

            1、StdSchedulerFactory

                StdSchedulerFactory 是 ISchedulerFactory 接口的實現。 它使用一組屬性(NameValueCollection)來創建和初始化Quartz Scheduler。 這些屬性通常存儲在文件中並從文件中加載,但也可以由程序創建並直接傳遞給工廠。 只需在工廠類實例上調用 getScheduler() 就可以生成調度程序,初始化它(及其ThreadPool,JobStore和DataSources),並返回其公共接口的句柄。

                Quartz發行版的“docs / config”目錄中有一些示例配置(包括屬性的描述)。 您可以在Quartz文檔的“參考”部分下的“配置”手冊中找到完整的文檔。


            2、DirectSchedulerFactory

                DirectSchedulerFactory 是另一個 SchedulerFactory 實現。 對於那些希望以更加程序化的方式創建 Scheduler 實例的人來說,它非常有用。 由於以下原因,通常不鼓勵使用它:(1)它要求用戶更好地理解他們正在做什么,以及(2)它不允許聲明性配置-或者換句話說,您最終硬編碼了調度程序的所有設置。

            3、Logging

                Quartz.NET 使用 LibLob 庫來滿足其所有日志記錄需求。 Quartz 不會產生很多日志信息——通常只是在初始化期間產生一些信息,然后在 Jobs 執行期間只產生關於嚴重問題的消息。為了“優化”日志設置(比如輸出量和輸出位置),您需要實際配置所選擇的日志框架,因為 LibLog 主要將工作委托給更成熟的日志框架,如log4net、serilog等。

            4、高級(企業)功能

                集群:集群目前只適用於 AdoJobstore(JobStoreTX)。功能包括負載平衡和作業故障轉移(如果JobDetail的“請求恢復”標志設置為true)。
            
                通過將“quartz.jobStore.clustered”屬性設置為“true”來啟用群集。 集群中的每個實例都應使用相同的quartz屬性副本。 例外情況是使用相同的屬性,具有以下允許的例外:不同的線程池大小,以及“quartz.scheduler.instanceId”屬性的不同值。 集群中的每個節點必須具有唯一的instanceId,通過將“AUTO”作為此屬性的值放置,可以輕松完成(不需要不同的屬性文件)。

                永遠不要在不同的機器上運行群集,除非它們的時鍾使用某種形式的時間同步服務(守護進程)進行同步,這些服務定期運行(時鍾必須在彼此的秒內)。 如果您不熟悉如何執行此操作,請訪問http://www.boulder.nist.gov/timefreq/service/its.htm。

                永遠不要針對運行任何其他實例的同一組表啟動非群集實例。 您可能會收到嚴重的數據損壞,並且肯定會遇到不正常的行為。

            5、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命名空間中找到這些開箱即用的作業。
            
        三、總結

            好了,今天就寫到這里了。這個系列的內容先暫停吧,以后有好的內容再更新了。還是老規矩,我把英文原文地址發出來,英文好的可以直接看英文,理解的會更好。地址如下:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/configuration-resource-usage-and-scheduler-factory.html,這篇文章是起始文章,我今天寫的這篇文章把后面的所有的內容寫在了一起。

            不忘初心,繼續努力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM