应用介绍
定时任务用 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 项目。
它是 Java 那套 Quartz 的 .NET 实现,用了很多年,接口稳得住。任务就是一个实现 IJob 的普通类,触发器决定什么时候触发——固定间隔、Cron 表达式、指定次数都行。进程停了一段时间再起来,错过的那些触发按你设的 misfire 策略补跑或跳过,不会静悄悄地丢。
软件功能
Cron 触发器:用 Cron 表达式描述"每个工作日早上九点半"这种排期,不用自己算下一次该什么时候跑。
持久化排期:AdoJobStore 把任务和触发器写进 SQL Server、PostgreSQL、MySQL、SQLite,重启不丢,改排期也不用重新发布。
集群模式:多个实例连同一个库自动组成集群,同一个触发只会被一个节点拿到,某个节点挂了它手上的任务由别人接管。
Misfire 策略:停机期间错过的触发是立刻补一次、全部补齐还是直接跳到下一次,按任务逐个指定。
宿主集成:依赖注入、泛型主机、健康检查、System.Text.Json 序列化都在核心包里,加一个 NuGet 包就能接进现有的 ASP.NET Core 项目。


