NET - .NET Core 之 Abp 整合 Quartz

介绍

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

Abp模板工程中已经整合了Abp.Quartz包

 

ASP.NET模板文件有一个内置的持久后台作业队列和后台工作程序系统。如果你对你的后台工作人员有高级的调度要求,Quartz可以是一个不错的选择。Hangfire也可以是持久后台作业队列的一个很好的替代方案。

 

安装

将abp.quartz的NuGet包安装到你的项目中,并为你的模块AbpQuartzModule添加DependsOn属性:

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

 

创建Job

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

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

 

Schedule Jobs

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!");
    }
}   

 

遇到的问题

  1. 运行工程提示No Compant "Abp.xxxx.Configuration" was found.
  2. 运行工程提示No Compant "Abp.xxxx.IRepository" was found.

 

 

以上两个问题都是因为AbpModule类上缺少DependsOn, 补充以下Depends

[DependsOn(
    typeof(EdgeServerApplicationModule),
    typeof(EdgeServerEntityFrameworkCoreModule),
    typeof(AbpAspNetCoreModule),
         typeof(AbpQuartzModule))]
    public class XXXBackgroundTasksModule : AbpModule
    {

 

注意:要在AbpModule中的Initialize方法中,替换数据库默认的连接字符串

public override void Initialize() 
{
    Configuration.DefaultNameOrConnectionString = _appConfiguration.GetConnectionString(XXXConsts.ConnectionStringName);
           
    IocManager.RegisterAssemblyByConvention(typeof(XXXBackgroundTasksModule).GetAssembly());


}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值