using Quartz; namespace WebApi; public static class Expand { public static void AddScheduler(this WebApplicationBuilder builder) { builder.Services.AddQuartz(q => { // 配置调度器 q.SchedulerId = "EmailBillScheduler"; // 配置邮件同步任务 - 每10分钟执行一次 var emailJobKey = new JobKey("EmailSyncJob"); q.AddJob(opts => opts.WithIdentity(emailJobKey)); q.AddTrigger(opts => opts .ForJob(emailJobKey) .WithIdentity("EmailSyncTrigger") .WithCronSchedule("0 0/20 * * * ?") // 每20分钟执行 .WithDescription("每20分钟同步一次邮件")); // 配置周期性账单任务 - 每天早上6点执行 var periodicBillJobKey = new JobKey("PeriodicBillJob"); q.AddJob(opts => opts.WithIdentity(periodicBillJobKey)); q.AddTrigger(opts => opts .ForJob(periodicBillJobKey) .WithIdentity("PeriodicBillTrigger") .WithCronSchedule("0 0 6 * * ?") // 每天早上6点执行 .WithDescription("每天早上6点执行周期性账单检查")); }); // 添加 Quartz Hosted Service builder.Services.AddQuartzHostedService(options => { // 等待任务完成后再关闭 options.WaitForJobsToComplete = true; }); } }