文檔目錄 本節內容: 簡介 安裝 創建工作 調度工作 更多 簡介 Quartz 是一個功能完整的開源工作調度系統,可用於最小的應用到一個大型的企業系統.Abp.Quartz 包簡單地把Quartz集成到ABP中. ABP已經內置後持久化的台作業和工作者,如果你有更高的調度上的需求,Quzrtz是一個 ...
本節內容:
Quartz 是一個功能完整的開源工作調度系統,可用於最小的應用到一個大型的企業系統.Abp.Quartz 包簡單地把Quartz集成到ABP中.
ABP已經內置後持久化的台作業和工作者,如果你有更高的調度上的需求,Quzrtz是一個好的選擇,同樣Hangfire 也是一個好的關於持久化後臺工作的隊列的選擇.
把Abp.Quartz nuget包安裝到你的項目里,然後在你的模塊上為AbpQuartzModule添加一個DependsOn 特性:
[DependsOn(typeof (AbpQuartzModule))] public class YourModule : AbpModule { //... }
為創建一個新的工作,你要麼實現Quartz的IJob介面,或從JobBase類繼承(定義在Abp.Quartz包里),JobBase有些幫助性的屬性和方法(例如:日誌和本地化),一個簡單的Job類如下所示:
public class MyLogJob : JobBase, ITransientDependency { public override void Execute(IJobExecutionContext context) { Logger.Info("Executed MyLogJob :)"); } }
我們通過記錄日誌,簡單地實現Execute方法,更多信息可以查看Quartz文檔.
用IQuartzScheduleJobManager 來調度工作,把可以把它註入到你的類里(或者在你的模塊的PostInitialize方法里解析它的實例然後使用它)來調度工作.舉個用控制器調度一個工作的例子:
public class HomeController : AbpController { private readonly IQuartzScheduleJobManager _jobManager; public HomeController(IQuartzScheduleJobManager jobManager) { _jobManager = jobManager; } public async Task<ActionResult> ScheduleJob() { await _jobManager.ScheduleAsync<MyLogJob>( job => { job.WithIdentity("MyLogJobIdentity", "MyGroup") .WithDescription("A job to simply write logs."); }, trigger => { trigger.StartNow() .WithSimpleSchedule(schedule => { schedule.RepeatForever() .WithIntervalInSeconds(5) .Build(); }); }); return Content("OK, scheduled!"); } }
關於Quartz更多內容,請查看它的文檔