ABP文檔 - Quartz 集成


文檔目錄

 

本節內容:

 

簡介

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更多內容,請查看它的文檔

  

英文原文


免責聲明!

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



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