Quartz简介

Quartz是一个功能强大、开源的调度框架,可用于在.NET应用程序中进行任务调度。它提供了丰富的功能和灵活的配置选项,支持多种调度方式(如简单触发、Cron表达式等),并允许任务的动态添加和删除。

在Asp.Net Core中使用Quartz

在Asp.Net Core项目中使用Quartz框架可以通过以下步骤实现:

1. 引入QuartzNuGet包
在项目的.csproj文件中添加对Quartz的引用:

<ItemGroup>
  <PackageReference Include="Quartz" Version="3.0.7" />
</ItemGroup>

2. 配置Quartz服务
在Startup.cs文件中的ConfigureServices方法中添加对Quartz服务的配置:

services.AddQuartz(q =>
{
    q.UseMicrosoftDependencyInjectionScopedJobFactory();
    q.UseDefaultThreadPool(tp =>
    {
        tp.MaxConcurrency = 10;
    });
    q.ConfigureAspNetCore()
        .UseHttpContextAccessor();
    q.UseSimpleTypeLoader()
        .UseInMemoryStore()
        .UseDefaultThreadPool(tp =>
        {
            tp.MaxConcurrency = 10;
        })
        .UseQuartzHostedService(options =>
        {
            options.WaitForJobsToComplete = true;
        });
});

3. 创建Quartz作业和触发器
创建一个实现IJob接口的Quartz作业类,并在ConfigureServices方法中使用AddJob方法注册作业。然后创建一个触发器,指定触发时间和执行间隔:

services.AddQuartzJob<MyJob>(TriggerBuilder.Create()
    .WithIdentity("MyJobTrigger")
    .WithSimpleSchedule(schedule =>
        schedule.WithInterval(TimeSpan.FromSeconds(10)).RepeatForever())
    .Build());

4. 启动Quartz调度器
在Configure方法中启动Quartz调度器:

app.UseQuartzJob();

通过以上步骤,即可在Asp.Net Core项目中成功使用Quartz框架进行任务调度。