当前位置: 首页 > news >正文

Quartz.net 正则表达式触发器

1、创建项目

项目类型控制台应用程序,.Net Framework框架版本 4.7.2

2、引入框架

NuGet\Install-Package Quartz -Version 3.8.0

3、创建Job

自定义Job实现接口IJob,在Execute方法实现定时逻辑,

using Quartz;
using System;
using System.Threading.Tasks;namespace QuartzConsole
{public class MyJob : IJob{public Task Execute(IJobExecutionContext context){return Console.Out.WriteLineAsync($"任务开始执行了:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");}}
}

4、创建调度器实例

使用工厂类StdSchedulerFactory创建调度器实例,

StdSchedulerFactory factory = new StdSchedulerFactory();//创建工厂实例var scheduler = await factory.GetScheduler();//创建调度器await scheduler.Start();//启动调度器

5、创建Job实例

使用Job构建器创建任务实例,

IJobDetail job = JobBuilder.Create<MyJob>().WithIdentity("job1", "group1").Build();

6、创建触发器

使用触发器构建器创建触发器实例,触发器包含简单触发器和正则表达式触发器,比如重复执行多少次这种简单的逻辑,可以使用简单触发器,比如每天21点-23点,每隔2分钟的第5秒开始执行任务,则适合使用正则表达式触发器来构建。

简单触发器:

 #region 简单触发器,每隔5秒重复执行ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger", "group1").WithSimpleSchedule(x=>x.WithInterval(TimeSpan.FromSeconds(5)).RepeatForever()).Build();#endregion

正则表达式触发器:

#region 每天21点-23点,每隔2分钟的第5秒开始执行ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger", "group1").WithCronSchedule("5 0/2 21-23 * * ?").Build();#endregion

触发器正则表达式生成可以借助工具,参考链接:

Free Online Cron Expression Generator and Describer - FreeFormatter.com

7、将任务和触发器安排到调度器

await scheduler.ScheduleJob(job, trigger);

8、完整代码

using Quartz;
using Quartz.Impl;
using Quartz.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace QuartzConsole
{class Program{async static Task Main(string[] args){StdSchedulerFactory factory = new StdSchedulerFactory();var scheduler = await factory.GetScheduler();await scheduler.Start();IJobDetail job = JobBuilder.Create<MyJob>().WithIdentity("job1", "group1").Build();//#region 每天21点-23点,每隔2分钟的第5秒开始执行//ITrigger trigger = TriggerBuilder.Create()//    .WithIdentity("trigger", "group1")//    .WithCronSchedule("5 0/2 21-23 * * ?")//    .Build();//#endregion//#region 每天21:33执行//ITrigger trigger = TriggerBuilder.Create()//    .WithIdentity("trigger", "group1")//    .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(21,33))//    .Build();//#endregion#region 每周五21:36执行//ITrigger trigger = TriggerBuilder.Create()//    .WithIdentity("trigger", "group1")//    .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday,21,36))//    .Build();//ITrigger trigger = TriggerBuilder.Create()//    .WithIdentity("trigger", "group1")//    .WithCronSchedule("0 39 21 ? * FRI")//    .Build();#endregion#region 简单触发器,每隔5秒重复执行ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger", "group1").WithSimpleSchedule(x=>x.WithInterval(TimeSpan.FromSeconds(5)).RepeatForever()).Build();#endregionawait scheduler.ScheduleJob(job, trigger);Console.WriteLine("Press any key to close the application");Console.ReadKey();}}
}

官方学习文档:Cron Triggers | Quartz.NET

http://www.lryc.cn/news/265409.html

相关文章:

  • 【已解决】修改了网站的class样式name值,会影响SEO,搜索引擎抓取网站及排名吗?
  • 微信小程序开发系列-02注册小程序
  • 安装 PyCharm 2021.1 保姆级教程
  • 浏览器 cookie 的原理(详)
  • StringBuilder和StringBuffer区别是什么?
  • 【数据分析】数据指标的分类及应用场景
  • 首涂第二十八套_新版海螺M3多功能苹果CMSv10自适应全屏高端模板
  • MatGPT - 访问 OpenAI™ ChatGPT API 的 MATLAB® 应用程序
  • Tomcat转SpringBoot、tomcat升级到springboot、springmvc改造springboot
  • 浅述无人机技术在地质灾害应急救援场景中的应用
  • js-cookie的使用以及存储token安全的注意要点
  • Android 网络状态判断
  • 管理类联考——数学——真题篇——按知识分类——代数——数列
  • .net core webapi 自定义异常过滤器
  • SuperMap iServer发布的ArcGIS REST 地图服务如何通过ArcGIS API加载
  • python调用GPT API
  • ModuleNotFoundError: No module named ‘tensorflow‘
  • 智能优化算法应用:基于鹰栖息算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 自定义Taro上传图片hooks(useUploadImg)
  • 量子密码学简介
  • 使用docker创建自己的Android编译容器
  • 4-Docker命令之docker load
  • 微信小程序格创校园跑腿小程序源码v1.1.64+前端
  • 【单元测试】测还是不测,这是一个问题
  • Global Mapper SDK 19 中文开发文档(八)
  • es检索之复合检索
  • 09.list 容器
  • 速盾网络:网站用速盾cdn的好处
  • Centos7在安装Graylog时新安装MongoDB报错端口不监听服务不启动无法运行启动失败
  • Spark Machine Learning进行数据挖掘的简单应用(兴趣预测问题)