ABP文档 - Quartz 集成

2018-06-22 07:45:15来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

文档目录

 

本节内容:

  • 简介
  • 安装
  • 创建工作
  • 调度工作
  • 更多

 

简介

Quartz 是一个功能完整的开源工作调度系统,可用于最小的应用到一个大型的企业系统.Abp.Quartz 包简单地把Quartz集成到ABP中.

ABP已经内置后持久化的台作业和工作者,如果你有更高的调度上的需求,Quzrtz是一个好的选择,同样Hangfire 也是一个好的关于持久化后台工作的队列的选择.

 

安装

Abp.Quartz  nuget包安装到你的项目里,然后在你的模块上为AbpQuartzModule添加一个DependsOn 特性:

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

 

创建工作

为创建一个新的工作,你要么实现Quartz的IJob接口,或从JobBase类继承(定义在Abp.Quartz包里),JobBase有些帮助性的属性和方法(例如:日志和本地化),一个简单的Job类如下所示:

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

我们通过记录日志,简单地实现Execute方法,更多信息可以查看Quartz文档.

 

调度工作

IQuartzScheduleJobManager 来调度工作,把可以把它注入到你的类里(或者在你的模块的PostInitialize方法里解析它的实例然后使用它)来调度工作.举个用控制器调度一个工作的例子:

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更多内容,请查看它的文档

  

英文原文

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:MVC分页控件

下一篇:mvc @html.action() 跨area调用controller 中的action