Web API 的定时任务可以在预定的时间间隔或特定时间执行某些任务或操作。通常用于周期性地执行数据清理、报告生成、提醒通知等后台任务,以确保系统的正常运行和数据的及时处理。
原本在 winform 上做定时任务,用的是 Quartz,但是配置比较复杂,想着有没有配置简单点,又能有 UI 界面的。
所以就找到了 GZY.Quartz.MUI
在项目上右键——NuGet 包管理器,搜索 GZY.Quartz.MUI 进行安装。
安装完成后在 program.cs 中引用定时任务
// 添加定时任务调度
builder.Services.AddQuartzUI();
在 Program.cs 中使用定时任务
// 使用定时任务调度
app.UseQuartz();
启动项目,在弹出来的地址中,输入后缀 /QuartzUI,就能访问定时调度的 UI 界面。
下面就可以愉快的添加自己的定时调度了。(新添加的任务,默认是暂停状态,需要启动后才能立即执行)
点击新建任务
输入对应的参数创建定时任务
新建的定时任务默认是暂停状态,需要开启任务。
开启后可以点击任务右侧的 “执行记录” 按钮,查看执行情况。
发现每次执行的时候都报错了:Value cannot be null. (Parameter 'content')
是说缺失参数,我看了调用的 API 接口,接口中没有参数。
问了度娘,说这是 GZY.Quartz.MUI 的 bug,没办法解决。
因此尝试修改任务参数,将参数输入 null
保存后任务再次执行时,竟然成功了。
在项目中添加 jobs 文件夹,在文件夹中常见 TestJob.cs
继承 IJobService 如下
using GZY.Quartz.MUI.BaseService;
namespace webapi_rumen.Jobs
{
public class TestJob : IJobService
{
public string ExecuteService(string parameter)
{
return "定时任务已执行成功!";
}
}
}
在 program.cs 中添加
// 引用本地调度任务访问
builder.Services.AddQuartzClassJobs();
运行项目,在定时调度的UI界面添加调度任务。
开启任务,查看“执行记录”,执行成功,如下: