1. 程式人生 > >ABP官方文檔翻譯 7.3 Quartz集成

ABP官方文檔翻譯 7.3 Quartz集成

depend result repeat write family org val identity dependson

Quartz集成

  • 介紹
  • 安裝
  • 創建Jobs
  • 計劃安排Jobs
  • 更多

介紹

  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的信息。

返回主目錄

ABP官方文檔翻譯 7.3 Quartz集成