Quartz 集成

介绍

Quartz  是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。

该  Abp.Quartz  包装简单集成石英到ASP.NET样板。

ASP.NET Boilerplate具有内置的  持久后台作业队列和后台工作者  系统。如果您有后台工作人员的高级计划要求,Quartz可能是一个很好的选择。  对于持久性后台作业队列,Hangfire也可以是一个很好的替代方案。

安装

Abp.Quartz  NuGet包安装  到您的项目中,并为您 的AbpQuartzModule 模块添加DependsOn属性  

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

创造工作

要创建新作业,您可以实现Quartz的IJob接口,也可以从JobBase类(在Abp.Quartz包中定义)派生,该类具有一些用于记录和本地化的辅助属性/方法。一个简单的工作类如下所示:

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

我们只是实现了Execute方法来编写日志。您可以查看Quartz的  文档  以获取更多信息。

安排工作

IQuartzScheduleJobManager用于安排作业。您可以将它注入您的类(或者您可以在模块的PostInitialize方法中解析并使用它)来安排作业。调度作业的示例Controller:

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的  文档

nidie.com.cn - 用心与你沟通