框架高度集成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层中配置类文件了,
直接用接口来进行任务调度。