0%

Quartz 任务调度

Quartz 任务调度,用于布置一些定时任务

下载安装

两种方式:NuGet 包下载和下载 zip 压缩包手动安装

NuGet Package

没有比这更简单的了,只能说右手都行。只需要启动 Visual Studio(安装了 NuGet)并从包管理器扩展中添加对包 Quartz 的引用:

或者使用 NuGet 命令行执行

1
Install-Package Quartz

Zip Archive

简短版:下载 Quartz.NET 后,将其解压到某个位置,Quartz.dll 从 bin 目录中获取并开始使用它。

Quartz 核心库没有任何硬二进制依赖。当您选择使用需要 JSON.NET 的 JSON 序列化包时,您可以选择加入更多依赖项。您至少需要 Quartz.dll 在您的应用程序二进制文件旁边才能成功运行 Quartz.NET。因此,只需将其添加为对使用它们的 Visual Studio 项目的引用。您可以从路径 bin\your-target-framework-version\release\Quartz 提取的存档中找到这些 dll

想要了解更多请查看 官方文档

使用

Job:
我们想要调度的任务都必须实现 org.quartz.job 接口,然后实现接口中定义的 execute( ) 方法即可

Trigger:
Trigger 作为执行任务的调度器。我们如果想要凌晨 1 点执行备份数据的任务,那么 Trigger 就会设置凌晨 1 点执行该任务
其中 Trigger 又分为 SimpleTrigger 和 CronTrigger 两种

Scheduler:
Scheduler 为任务的调度器,它会将任务 Job 及触发器 Trigger 整合起来,负责基于 Trigger 设定的时间来执行 Job

简单的示例

1
2
3
4
5
6
7
8
9
public class HelloJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine("hello word" + DateTime.Now);

return Task.CompletedTask;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Program
{
public async static Task Main(string[] args)
{
Console.WriteLine("开始调度!");
//1、创建一个调度
var factory = new StdSchedulerFactory();
var scheduler = await factory.GetScheduler();

await scheduler.Start();

//2、创建一个任务
var job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build();

//3、创建一个触发器
var trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")

.WithCronSchedule("0/5 * * * * ?") // 使用 cron 表达式,5 秒执行一次
.Build();

await scheduler.ScheduleJob(job, trigger);

Console.ReadKey();
Console.WriteLine("停止调度!");

await scheduler.Shutdown();
}
}

欢迎关注我的其它发布渠道