Quartz.NET是一個(gè)強(qiáng)大、開(kāi)源、輕量的作業(yè)調(diào)度框架,你能夠用它來(lái)為執(zhí)行一個(gè)作業(yè)而創(chuàng)建簡(jiǎn)單的或復(fù)雜的作業(yè)調(diào)度。它有很多特征,如:數(shù)據(jù)庫(kù)支持,集群,插件,支持cron-like表達(dá)式等等。在2017年的最后一天Quartz.NET
3.0發(fā)布,正式支持了.NET Core 和async/await。這是一個(gè)大版本,有眾多新特性和大的功能
官網(wǎng):http://www.quartz-scheduler.net/ <http://www.quartz-scheduler.net/>
源碼:https://github.com/quartznet/quartznet
<https://github.com/quartznet/quartznet>
示例:https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html
<https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html>?
新功能
* 支持 async/await 基于任務(wù)的作業(yè),內(nèi)部以async/await工作
* 支持.NET Core / netstandard 2.0和.NET Framework 4.5.2及更高版本
* 通過(guò)提供程序名稱(chēng)SQLite-Microsoft支持Microsoft.Data.Sqlite,舊的提供程序SQLite也仍然有效,還可以用
* 增加了對(duì)SQL Server內(nèi)存優(yōu)化表的初步支持和Quartz.Impl.AdoJobStore.UpdateLockRowSemaphoreMOT
* 從依賴(lài)關(guān)系中刪除Common.Logging
* 刪除C5 Collections,使用.NET框架內(nèi)置的Collections
* 在插件啟動(dòng)時(shí)添加對(duì)作業(yè)調(diào)度XML文件的驗(yàn)證
* 在TimeZoneUtil中添加對(duì)額外自定義時(shí)區(qū)解析器功能的支持
API 不兼容
* 作業(yè)和插件分離到一個(gè)單獨(dú)的程序集/ NuGet包里 Quartz.Jobs和Quartz.Plugins
* ADO.NET提供程序名稱(chēng)已經(jīng)簡(jiǎn)化,提供程序名稱(chēng)不帶版本,例如SqlServer-20 => SqlServer
* API方法已經(jīng)被重新定義,主要使用IReadOnlyCollection,這隱藏了兩個(gè)HashSets和List
* LibLog已經(jīng)隱藏到內(nèi)部(ILog等),就像它本來(lái)打算的那樣
* SimpleThreadPool 消失了,用系統(tǒng)的線(xiàn)程池取代了
* 調(diào)度程序方法已經(jīng)改為基于Task,記得要await 它們
* IJob接口現(xiàn)在返回一個(gè)Task
* 一些IList屬性已經(jīng)更改為IReadOnlyList ,以正確反映意圖
* SQL Server CE支持已被刪除
* DailyCalendar現(xiàn)在使用日期時(shí)間排除日期,并具有ISet接口來(lái)訪(fǎng)問(wèn)它們
* IObjectSerializer有新的方法,必須實(shí)現(xiàn) void Initialize()
* IInterruptableJob取消了上下文的CancellationToken
已知的問(wèn)題
* Windows和Linux之間的時(shí)區(qū)id有問(wèn)題,它們?cè)谕粋€(gè)區(qū)域使用不同的ID
* .NET Core的沒(méi)有Remoting 支持
這次的版本變化很大,如果你是老用戶(hù),大家要認(rèn)真看下遷移指南:
https://www.quartz-scheduler.net/documentation/quartz-3.x/migration-guide.html
<https://www.quartz-scheduler.net/documentation/quartz-3.x/migration-guide.html>
熱門(mén)工具 換一換
