ABP官方文檔翻譯 7.3 Quartz集成


Quartz集成

介紹

  Quartz是一個全功能的、開源的job計划安排系統,可以用在小的apps也可以用於大型的企業系統。Abp.Quartz包簡化了ABP集成Quartz。

  ABP有內建的持久化后台job隊列和后台worker系統。如果對於后台workers你有更高級的計划安排需求,Quartz會是一個更好的選擇。對於持久化后台job隊列,Hangfire也是一個好的選擇。

安裝

  在工程中安裝Abp.Quartz nuget包並在模塊上為AbpQuartzModule添加一個DependsOn特性:

[DependsOn(typeof (AbpQuartzModule))]
public class YourModule : AbpModule
{
    //...
}

創建Jobs

  要創建一個新job,你可以實現Quartz的IJob接口,或者繼承JobBase類(定義在Abp.Quartz包),這個類包含一些幫助屬性和方法(例如日志和本地化)。一個簡單的job類如下所示:

public class MyLogJob : JobBase, ITransientDependency
{
    public override void Execute(IJobExecutionContext context)
    {
        Logger.Info("Executed MyLogJob :)");
    }
}

  我們簡化了實現Execute方法來寫日志。你可以參見Quartz文檔了解更多。

計划安排Jobs

  IQuartzScheduleJobManager用來計划安排工作。你可以注入到你的類(或可以在模塊的PostInitialize方法中使用它)來規划jobs。規划一個job的示例控制器:

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!");
    }
}   

更多

  請參見Quart的文檔了解更多關於Quartz的信息。

 

返回主目錄


免責聲明!

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



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