Quartz.NET

Quartz.NET

.NET定时任务调度框架

开发官网

应用介绍

定时任务用 Timer 手搓,进程一重启排期就全没了;交给 Windows 计划任务,又跟应用的日志、配置、部署完全脱节;等应用扩到两个实例,同一个任务被跑了两遍。Quartz.NET 把这件事收回到代码里——任务和触发器分开定义,排期存进数据库,多实例组成集群自动争抢,同一时刻只有一个节点在跑

它是 Java 那套 Quartz 的 .NET 实现,用了很多年,接口稳得住。任务就是一个实现 IJob 的普通类,触发器决定什么时候触发——固定间隔、Cron 表达式、指定次数都行。进程停了一段时间再起来,错过的那些触发按你设的 misfire 策略补跑或跳过,不会静悄悄地丢。

软件功能



Cron 触发器:用 Cron 表达式描述"每个工作日早上九点半"这种排期,不用自己算下一次该什么时候跑。

持久化排期:AdoJobStore 把任务和触发器写进 SQL Server、PostgreSQL、MySQL、SQLite,重启不丢,改排期也不用重新发布。

集群模式:多个实例连同一个库自动组成集群,同一个触发只会被一个节点拿到,某个节点挂了它手上的任务由别人接管。

Misfire 策略:停机期间错过的触发是立刻补一次、全部补齐还是直接跳到下一次,按任务逐个指定。

宿主集成:依赖注入、泛型主机、健康检查、System.Text.Json 序列化都在核心包里,加一个 NuGet 包就能接进现有的 ASP.NET Core 项目。