SuperAPI AI 工具集

dotnet-quartz-background-jobs

编程与开发

查看项目

更新于 10-16 02:22

技能介绍

用途

该技能用于在 .NET 项目中生成基于 Quartz.NET 的定时后台任务(Background Jobs)代码。Quartz.NET 是一个功能完整的作业调度库,支持在指定时间或间隔运行任务、使用 Cron 表达式进行复杂调度、作业持久化(应用重启后仍保留)、依赖注入以及集群分布式执行。

主要能力

技能提供以下模板与参考内容:

  • 简单间隔作业:实现 IJob 接口,通过 SimpleScheduleBuilder 设置固定间隔(如每 5 分钟)重复执行。示例中使用 [DisallowConcurrentExecution] 防止重叠执行。
  • Cron 定时作业:通过 CronScheduleBuilder 按 Cron 表达式调度,例如每天 6:00 AM 生成日报。
  • 作业注册:通过实现 IConfigureOptions<QuartzOptions> 的 Setup 类,使用 AddJob 与 AddTrigger 注册作业和触发器,并设置 JobKey、描述、调度方式与启动时间。
  • Cron 表达式参考:提供常用表达式(每小时、每 15 分钟、每天 6 点、工作日 6 点、每月首日/末日、每周日中午)以及字段取值范围和特殊字符(*、?、-、,、/、L、W、#)说明。
  • 带数据映射的作业:通过 JobDataMap 传递参数(如 EmailId、Recipient),并在运行时动态调度作业。
  • 带重试逻辑的作业:使用 [PersistJobDataAfterExecution] 持久化数据映射,记录重试次数,达到最大重试次数后停止重试并记录严重日志。
  • Quartz 注册:在 DependencyInjection 中配置内存存储(开发)或持久化存储(生产,示例为 PostgreSQL),以及集群配置;注册 QuartzHostedService 并设置 WaitForJobsToComplete 与 AwaitApplicationStarted;注册各作业的 Setup 类。
  • 作业调度服务:提供 IJobSchedulerService 接口,支持在运行时按指定时间或延迟动态调度作业、取消作业、查询作业是否已调度。

使用方式

技能以代码模板形式给出,开发者可将模板复制到项目的 Infrastructure 层,按目录结构组织:BackgroundJobs/ 下放置 {JobName}Job.cs 与 {JobName}JobSetup.cs,并在 DependencyInjection.cs 中注册。作业通过构造函数注入所需服务与日志,在 Execute 方法中实现业务逻辑。

适用场景

适用于需要在 .NET 应用中执行定时或周期性后台任务的场景,例如处理待处理订单、生成并发送日报、同步外部 API 数据、发送定时邮件等。也适用于需要作业持久化或分布式集群调度的生产环境。

限制

资料未提供该技能的具体安装命令、收费方式、平台支持范围或实际运行效果等信息,暂未提供。