【BlogBook书】9、Quartz.Job:任务调度

科技   科技   2024-02-06 19:05   北京  

框架高度集成Quartz.Job组件作为任务调度方案,并且在Admin管理后台,有丰富的界面可以进行Web页面配置。

不仅支持按次数执行,也支持Cron表达式定时执行。

同时也支持类模式和接口模式两种方式逻辑设计方式。


一、相关的依赖注入配置

// 服务注册builder.Services.AddJobSetup();services.AddHostedService<QuartzJobHostedService>();//在InitializationHostServiceSetup.cs中

相关参数设置

// 默认在项目启动的时候,自动检测任务调度是否启动,并将开启的任务,自动加载到内存中等待被调用  "Middleware": {    "QuartzNetJob": {      "Enabled": true    },  }


二、使用方式

1、类模式

需要手动写代码逻辑,然后继承到IJob接口,并将这个类配置到数据库表中

public class Job_Blogs_Quartz : JobBase, IJob{    private readonly IBlogArticleServices _blogArticleServices;
public Job_Blogs_Quartz(IBlogArticleServices blogArticleServices, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices) : base(tasksQzServices, tasksLogServices) { _blogArticleServices = blogArticleServices; } public async Task Execute(IJobExecutionContext context) { var executeLog = await ExecuteJob(context, async () => await Run(context)); } public async Task Run(IJobExecutionContext context) { System.Console.WriteLine($"Job_Blogs_Quartz 执行 {DateTime.Now.ToShortTimeString()}"); var list = await _blogArticleServices.Query(); // 也可以通过数据库配置,获取传递过来的参数 JobDataMap data = context.JobDetail.JobDataMap; //int jobId = data.GetInt("JobParam"); }}

2、接口模式

直接在web管理后台,配置接口地址即可,效果和类模式一致,这样写好逻辑,通过接口的形势配置好,就不用在Blog.Core.Tasks层中配置类文件了,

直接用接口来进行任务调度。



BCVP代码创新社
专注于 NetCore 相关技术栈的推广,致力于前后端之间的完全分离,从壹开始,让每一个程序员都能从这里学有所成。
 最新文章