如何使用 Quartz.Net 启动计划作业?
How to start a scheduled job using Quartz.Net?
我创建了一个 .Net 5 工作者服务应用程序并安装了 Quartz.AspNetCore
包。
我想 运行 基于 cron 表达式的代码,例如每 5 分钟。我创建了一个 class MyJob
实现 Ijob
并在 DI 设置期间注册它
public static void Main(string[] args)
{
Host
.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services
.AddQuartz(quartzConfiguration =>
{
quartzConfiguration.ScheduleJob<MyJob>(jobConfiguration =>
{
jobConfiguration.WithCronSchedule("20/20 0 0 ? * * *"); // Every 20 seconds starting at second 20
});
})
.AddQuartzHostedService(quartzConfiguration => // I think this code is useful ?
{
quartzConfiguration.WaitForJobsToComplete = true;
})
.AddHostedService<Worker>();
})
.Build()
.Run();
}
但是作业本身永远不会执行。当调用 quartzConfiguration.AddJob<MyJob>()
时,我无法访问方法 .WithCronSchedule()
.
那么我如何告诉 Quartz 注册一个作业并根据 cron 表达式执行它呢?
cron 表达式 20/20 0 0 ? * * *
表示“每 20 秒,在第一个 20 秒之后,在第一个小时的第一分钟。
所以基本上,00:00:20
和 00:00:40
,或者午夜过后 20 秒和午夜过后 40 秒。
检查这是否是您想要的 cron。其他一切看起来都是正确的。
我创建了一个 .Net 5 工作者服务应用程序并安装了 Quartz.AspNetCore
包。
我想 运行 基于 cron 表达式的代码,例如每 5 分钟。我创建了一个 class MyJob
实现 Ijob
并在 DI 设置期间注册它
public static void Main(string[] args)
{
Host
.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services
.AddQuartz(quartzConfiguration =>
{
quartzConfiguration.ScheduleJob<MyJob>(jobConfiguration =>
{
jobConfiguration.WithCronSchedule("20/20 0 0 ? * * *"); // Every 20 seconds starting at second 20
});
})
.AddQuartzHostedService(quartzConfiguration => // I think this code is useful ?
{
quartzConfiguration.WaitForJobsToComplete = true;
})
.AddHostedService<Worker>();
})
.Build()
.Run();
}
但是作业本身永远不会执行。当调用 quartzConfiguration.AddJob<MyJob>()
时,我无法访问方法 .WithCronSchedule()
.
那么我如何告诉 Quartz 注册一个作业并根据 cron 表达式执行它呢?
cron 表达式 20/20 0 0 ? * * *
表示“每 20 秒,在第一个 20 秒之后,在第一个小时的第一分钟。
所以基本上,00:00:20
和 00:00:40
,或者午夜过后 20 秒和午夜过后 40 秒。
检查这是否是您想要的 cron。其他一切看起来都是正确的。