.net core 任务调度Quartz
工具
官网
Simple Triggers | Quartz.NET (quartz-scheduler.net)
nuget
Quartz.AspNetCore
1 using Quartz;
2 using QuarzNet;
3
4 var builder = WebApplication.CreateBuilder(args);
5
6 // Add services to the container.
7
8 builder.Services.AddControllers();
9 // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
10 builder.Services.AddEndpointsApiExplorer();
11 builder.Services.AddSwaggerGen();
12 builder.Services.AddQuartz(q =>
13 {
14 //通过扩展方法注入管理作业
15 q.UseMicrosoftDependencyInjectionJobFactory();
16 var jobKey = new JobKey("jobkey");
17 q.AddJob<CostomJob>(p => p.WithIdentity(jobKey));
18 q.AddTrigger(opt =>
19 {
20 opt.ForJob(jobKey).WithIdentity(jobKey + "trigger")
21 .WithCronSchedule("0/5 * * * * ?");//每5秒执行一次
22 });
23
24 });
25 builder.Services.AddQuartzServer(opt =>
26 {
27 opt.WaitForJobsToComplete = true;
28 });
29 var app = builder.Build();
30
31 // Configure the HTTP request pipeline.
32 if (app.Environment.IsDevelopment())
33 {
34 app.UseSwagger();
35 app.UseSwaggerUI();
36 }
37
38 app.UseHttpsRedirection();
39
40 app.UseAuthorization();
41
42 app.MapControllers();
43
44 app.Run();
任务代码
1 using Quartz;
2
3 namespace QuarzNet
4 {
5 public class CostomJob : IJob
6 {
7 private readonly ILogger<CostomJob> _logger;
8
9 public CostomJob(ILogger<CostomJob> logger)
10 {
11 this._logger = logger;
12 }
13
14 public Task Execute(IJobExecutionContext context)
15 {
16 _logger.LogInformation("任务",DateTime.Now);
17 return Task.CompletedTask;
18 }
19 }
20 }
修改以下 每10秒执行一次