定时调度插件------Quartz.NET(一)
官网地址 https://www.quartz-scheduler.net/
使用说明
dll引用
-
使用NuGet 搜索Quartz,作者为Marko Lahma, Quartz.NET为该插件
目前最新的为3.5.0版本,.NET Core/netstandard 2.0 and .NET Framework 4.6.2以上
2.6.2版本及以下无要求,3.0.0版本开始有最低版本
-
直接下载源码编译即可
当前使用版本为最新的3.5.0。
最小使用说明
共用类
//创建一个IJob的实现类
public class MyJob : IJob
{
private readonly ILogger<MyJob> logger;
public MyJob(ILogger<MyJob> logger)
{
this.logger = logger;
}
public async Task Execute(IJobExecutionContext context)
{
await Task.Delay(1000, context.CancellationToken);
logger.LogInformation("等待1秒");
}
}
.netcore容器注入
/*
如果需要提前注入的类可使用以下方法
方法名 生命周期 说明
AddSingleton 项目启动-项目关闭 相当于静态类 有且只有一个
AddTransient 请求开始-请求结束 对象都是同一个
AddScoped 请求获取-主动释放 每次获取的都不同
*/
//Quartz调度中心
services.AddQuartz(q =>
{
//使用默认的配置文件
q.UseMicrosoftDependencyInjectionJobFactory();
// 基本Quartz调度器、作业和触发器配置
q.ScheduleJob<MyJob>(
// 触发器的配置设定
triggerConfigurator => triggerConfigurator
// 唯一表示
.WithIdentity("myJobTrigger")
// 马上执行一次
.StartNow()
// 间隔5s执行一次
.WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever()),
// 任务的配置设定
jobConfigurator => jobConfigurator
// 唯一标识
.WithIdentity("myJob"));
});
// ASP.NET核心托管-添加Quartz服务
services.AddQuartzServer(options =>
{
// 当程序关闭时,我们希望任务也随之关闭
options.WaitForJobsToComplete = true;
});
.net framework4.6.2
// 创建调度工厂
ISchedulerFactory sf = new StdSchedulerFactory();
// 获得调度实例
IScheduler sched = await sf.GetScheduler();
// 获得当前时间的下一分钟
DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);
// 创建任务
IJobDetail job = JobBuilder.Create<MyJob>()
// 唯一标识
.WithIdentity("my job", "my group")
.Build();
// 定义触发器
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("my trigger", "my group")
// 触发时间
.StartAt(runTime)
.Build();
// 绑定任务和触发器
await sched.ScheduleJob(job, trigger);
// 开始调度
await sched.Start();
// 结束
await sched.Shutdown(true);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?