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

 

返回主目录

posted @ 2017-07-05 23:44  Yung2022  阅读(1747)  评论(0编辑  收藏  举报