abp定时任务

发布时间 2023-08-16 16:22:36作者: 一个土豆一棵青菜

abp版本6.0.3

 使用abp后台工作者而不是后台作业

以下为步骤:

1.在解决方案力新建一个XXXQuartz的项目

2.nuget安装AbpBackgroundWorkersQuartzModule

 

3.新建一个XXXQuartzModule.cs文件

using Volo.Abp.BackgroundWorkers.Quartz;
using Volo.Abp.Modularity;

namespace XXX.Quartz
{
    [DependsOn(typeof(AbpBackgroundWorkersQuartzModule))]
    public class XXXQuartzModule : AbpModule
    {

    }
}

  4.新建一个Worker的文件夹

5.新建一个TestWorker.cs文件

//Copyright(c) Microsoft.All Rights Reserved.


using Microsoft.Extensions.Logging;
using Quartz;
using Volo.Abp.BackgroundWorkers.Quartz;

namespace XXX.Quartz.Worker
{
    public class TestWorker : QuartzBackgroundWorkerBase
    {
        public TestWorker()
        {
            //测试 使用corn表达式每分钟执行一次
            JobDetail = JobBuilder.Create<TestWorker>().WithIdentity(nameof(TestWorker)).Build();
            Trigger = TriggerBuilder.Create()
                .WithIdentity(nameof(TestWorker))
                .WithCronSchedule("0 * * * * ?").Build();

            ScheduleJob = async scheduler =>
            {
                if (!await scheduler.CheckExists(JobDetail.Key))
                {
                    await scheduler.ScheduleJob(JobDetail, Trigger);
                }
            };
        }

        public override Task Execute(IJobExecutionContext context)
        {
            Logger.LogInformation("Executed TestWorker..!");
            return Task.CompletedTask;
        }
    }

}

  6.最后在XXXApplication项目里的XXXApplicationModule .cs文件中的DependsOn中添加

 typeof(XXXQuartzModule)

  大功告成