首页 > 代码库 > ABP官方文档翻译 7.3 Quartz集成

ABP官方文档翻译 7.3 Quartz集成

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集成