用途
该技能用于在 .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 数据、发送定时邮件等。也适用于需要作业持久化或分布式集群调度的生产环境。
限制
资料未提供该技能的具体安装命令、收费方式、平台支持范围或实际运行效果等信息,暂未提供。