Quartz.NET(作业调度框架) 学习笔记(三)【Cron 表达式】

.NET开源作业调度框架Quartz Quartz是一个强大、开源、轻量的作业调度框架,你能够用它来为执行一个简单或复杂的作业调度任务。 阅读详情

有这么几个问题?

1,  每天的2点到6点之间每15分钟对服务器上某个文件夹进行搜索

2,  每周的周5的8点45分对数据库进行备份

3,  每月的最后一天8点创建销售报表

4,  我要在,每个月的15号左右给用户发送邮件,如果是15号是节假日。那么等都来上班的时候在发送。

5,  我要在每个月的第三个周的周5,给每个员工发邮件通知聚餐。

 

像这样复杂的计划,我们怎么办呢,那么CronTrigger触发器就能为我准确的计划

 

先说说CronTrigger触发器的用法

cron 这一观念是来自于 UNIX 世界。在 UNIX 中,cron 是一个运行于后台的守护程序,它负责所有基于时间的事件。尽管 Quartz 除相同的名字和相似的表达式语法外,并未分享到 UNIX cron 别的东西,我们还是值得花几个段落去理解 cron 背后的历史。我们这里的目标不是搞混 UNIX cron 表达式和 Quartz 的 cron 表达式,但是你应该了解 Quartz 表达式的历史,并探索为什么他们运作起来很像

首先说说CronTrigger控制时间的7个域

分,秒,时,天,月,周,年

 

Cron Expression 的格式

比如说第一个问题,每天的2点到6点之间每15分钟对服务器上某个文件夹进行搜索?

对服务器上某个文件夹进行搜索 这是Job所做的事,我们如何来控制Job的执行呢

看看Cron表达式

0  0,15,30,45  2,3,4,5,6  ?  *  *  *

这个在0,15,30,45分域,说明代表在时间分上的执行控制。

“,”: 时间列表之间用

“*”:在分域,月域,周域,年域 代表每天,每月,每周,每年,也就代表任何

“?”:这是一个消除矛盾的符号,解释一下“?“ 因为如果指定了日,在指定周的话,就变的不清楚,不知道是到周几执行 还是那一天执行。所以日和周域,不能同时指定值,又不能为空,只能用?代表其中之一 ?代表不指定值

当然上面的这个表达式可以精简

0  0/15  2-6  ?  *  *

0/15 表示分域 以15分递增 和0,15,30,45是一样的效果

2-6 表示时域从2点到6点每小时执行,就是代表一个区段

在这里没有给年域指定,是因为年域可以为空,其它域都不可以

注:这个表达式执行顺序:2:15 00, 2:30 00,  2:45 00,3:00 00 秒域是0 所以在整分执行 如果秒域我改成15  就变成  2:15 15,2:30 15 ,2:45 15 3:00 15 这样的执行

 

看第二个问题

每周的周5的8点45分对数据库进行备份?

当然备份还是Job的工作,Corn表达式只是控制Job的

这个问题Cron表达式

*  45  8  ?  *  6  *

解释一下

“6”在周域上,不代表周六,而代表周5 这个你懂的,当然还可以用English的FRI

看第三个问题

每月的最后一天创建销售报表?

创建销售报表 当然还是Job的工作了

这个问题Cron表达式

0 0 8 L * ?

解释一下

“L” 说明了某域上允许的最后一个值。它仅被日和周域支持。当用在日域上,表示的是在月域上指定的月份的最后一天。

“L” 用在周域上表示周的最后一天 星期6 注意不是星期日

在这表示 每月的最后一天 因为月域上是“*”

0         30  8  ?  *  L  表示每个月的最后一个周六早上8点30执行

在看第四个问题

我要在,每个月的15号左右给用户发送邮件,如果是15号是节假日。那么等都来上班的时候在发送?

发邮件,不用解释你懂的,该什么负责

这里有就有了平日的概念,除了周末和法定假日都是平日

题目要求在节假日的不发送,那么Cron表达式很好啊,刚好有这个一个表达式来支持它

看看:*  *  *  15W  *  ?

解释一下:

“W” 字符代表着平日 (Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。例如,日域中的 15W 意味着 "离该月15号的最近一个平日。" 假如15号是星期六,那么 trigger 会在14号(星期四)触发,因为距15号最近的是星期四

最后一个问题

我要在每个月的第三个周的周5,给每个员工发邮件通知聚餐?

这个很简单,我只是为了说明最后一个符号 “#”

表达式:*  *  * ?  *  6#3

在解释一下

秒域是“*” 所以这个域合法的值 秒域合法的值 你懂的 0-59

分域是“*” 同上 你懂的

时域是 “*” 同上 你懂的

天域“?” 是因为周域有值,避免冲突的

月域“*” 你懂的

周域“6#3” 表示第三周的星期5 (注:6代表周五)

年域空,在所有域中只有年域可以为空。

 

注: 所有域和域之间是用空格隔开。

有了这么多表达式,你想控制JOB 应该很简了。

 

 要试验的话,拿 学习笔记(二)的代码将

 Trigger trigger = TriggerUtils.MakeSecondlyTrigger(2);

改为

CronTrigger trigger = new CronTrigger(“Cron Expression ”);

 

 

 

Quartz.NET作业调度框架详解与实战应用 作业调度系统是现代分布式系统中的关键组件,用于实现定时任务和周期性作业的自动化执行。其核心原理是通过调度器、触发器、作业三大组件协同工作,支持Cron表达式等灵活调度策略。Quartz.NET作为.NET平台的开源调度框架,提供了企业级的任务调度能力,特别适合电商促销、物流配送等高并发场景。该框架支持持久化存储和集群部署,通过AdoJobStore可以确保任务状态不丢失,结合分布式锁机制实现多节点协调。对于需要处理订单超时、定时对账等7×24小时关键业务的企业系统,Quartz.NET的稳定性和可靠性经过百 阅读详情

相关推荐

.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

一、课程介绍 明人不说暗话,跟着阿笨一起玩NET 。本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集、整理和完善此系列课程!本次分享课程给大家带来的是《.NET开源作业调度框架实战项目演练》实战技能课程,如果您对本次分享课程感兴趣的话,那么请跟着一起学习吧! 1.1、课程内容...

跟着阿笨一起玩NET 2155

C#使用Quartz.NET中Cron表达式

概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。 参考 官方学习文档:Documentation | Quartz.NET 使用实例介绍:Quartz.NET Quick Start Guid...

无名指的约定 2569

不用公网IP!用Ollama+Chatbox搭建家庭AI助手(内网穿透方案对比)

本文详细介绍了如何利用Ollama和Chatbox在家庭局域网中搭建本地AI助手,无需公网IP即可实现内网穿透。通过对比不同穿透方案(如Tailscale、FRP等),提供最优配置建议,帮助用户低成本部署隐私安全的家庭AI系统,适用于智能家居、儿童教育等多种场景。

weixin_26765287的博客 462

Quartz.net 定时任务之Cron表达式

一、cron表达式简单介绍和下载   1、在上一篇博客“Quartz.net 定时任务之简单任务”中,我简单介绍了quartz的使用,而这篇博客我将介绍cron的具体使用(不足之处望大神斧正)   1、cron是为了方便编写定时执行作业时间扩展出来的插件,这个有很多版本(网页版,窗体版等),cron表达式的存在,从而大大减低设置作业人员的操作难度和开发人员的编写难度。   2、cr...

anndy9999的博客 649

华为HCIP大数据备考实战:从题库精析到834分通关策略

本文详细介绍了华为HCIP大数据认证考试的备考策略,包括题库精析、重点章节突破和考场实战经验。作者以834分的高分通过考试,分享了官方教材的三遍阅读法、自建题库技巧以及各章节核心知识点,帮助考生高效备考并顺利通关。

weixin_29169899的博客 151

基于YOLO11深度学习的糖尿病视网膜病变智能诊断系统【Python源码+Pyqt5界面+数据集+训练代码】

本文详细介绍如何利用YOLO11深度学习技术构建糖尿病视网膜病变智能诊断系统。项目提供完整的Python源码、PyQt5图形界面、标注数据集及训练代码,实现从图片、视频到摄像头的多模态病变检测,旨在辅助医疗筛查,提升诊断效率。

weixin_29089057的博客 277

Quartz.net的cron表达式

写在前面 前面有一篇文章用到了quartz.net,在设置定时时间的时候,使用了cron表达式,这里记录几种常见设置方式,方便对照使用。 详情 在这篇文章:Quartz.Net在windows服务中的使用 中介绍了windows 服务和定时任务的搭配使用。其中: //新建一个触发器 ITrigger trigger = TriggerBuilder.Create().StartN...

weixin_33717117的博客 184

SAP PP未清生产订单关闭物料退料、新工单发料批量处理

( werks = '1001' lgort = 'A004' lgobe = '组装-成品组装' )( werks = '1002' lgort = 'C006' lgobe = '组装-二车间' )( werks = '1002' lgort = 'C007' lgobe = '组装-二车间' )( werks = '1001' lgort = 'A007' lgobe = '组装-MS' )( werks = '1001' lgort = 'A008' lgobe = '组装-GW' )

dingqing86的专栏 1193

Quartz.NET--“Cron” 表达式说明

CronTrigger 使用 UNIX 下的“Cron-like” 表达式,实际上用起来感觉它很像正则表达式,可以匹配任意时间,这是体现它灵活性的地方。它的规则如下: Cron 表达式包括以下 7 个字段(1 个可选) 秒 分 小时 月内日期 月 周内日期年(可选) 表达式的每个数值域都是一个有最大值和最小值的集合,如:秒域和分钟域的集合是0-59,日期域是1-31,

冷月宫主的专栏 1162

【速通RAG实战:索引】4.RAG文档解析技术

通过本文技术方案,可构建高精准、高效率的文档解析流水线,为 RAG 应用提供坚实的知识底座。核心在于**格式解析的鲁棒性**和**语义分块的准确性**,后续通过持续的性能优化和质量监控,逐步提升索引质量和检索效率。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1547

【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件

Cadence 17.4版本导出坐标文件往往都是txt格式,并且无标题、导出时间、导出设计工程多名称等信息。那么怎么样才能导出有带这些信息的excel版本并格式好看的坐标文件呢?

一点硬件 2764

cron表达式

参考: https://www.cnblogs.com/junrong624/p/4239517.html Cron表达式是一个字符串,字符串以空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:  1. Seconds Minutes Hours DayofMonth Month DayofWeek Year 2. Seconds Minutes Hours Dayo...

做一只强悍的蜜獾 353

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3683

C#作业调度Quartz.NET学习笔记

一、简单介绍 Quartz.NET是一个强大、开源、轻量vb.net教程 的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于WinForm和ASP.NET应用中。它灵活而不复杂,可以为执行一个作业而创建简单或复杂的作业调度。它有很多特征,如:数据库支持、集群、插件、支持cron-like表达式等等。 官网:http://www.quartz-scheduler.net/ 源码:https://github.com/quartznet/quartznet

chinaherolts2008的博客 787

6、业务影响分析(BIA)的数据收集与关键指标评估

本文全面解析了业务影响分析(BIA)的核心内容,包括数据收集、业务流程分析、信息系统与资产清单、人员与供应商依赖、影响声明、关键指标评估(如MTD、RTO、RPO)、威胁建模与风险分析等。通过详细的介绍和图表展示,帮助组织系统性地制定灾难恢复计划,以应对各种潜在风险,确保关键业务流程在灾难发生后能够快速恢复并持续运营。

moss5的博客 376

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Quartz.NET一个优秀的作业调度框架

1 什么是Quartz.NET? Quartz是一个功能齐全的开源作业调度系统,可以与几乎任何其他软件系统集成或一起使用。 2 为什么需要Quartz.NET? .NET Framework通过System.Timers.Timer类具有“内置”计时器功能-为什么有人使用Quartz而不是这些标准功能? 原因有很多!这里有一些: 计时器没有持久性机制。 计时器的时间安排不灵活(只能设置开始时间和重复间隔,没有基于日期,一天中的时间等信息)。 计时器不使用线程池(每个计时器一个线程) 计时器没有真正的管理方

极客神殿 1963

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C#作业调度Quartz简单使用

首先,作业调度Quartz的定义是: Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等 。 简单来说,Qu...

qq_43439125的博客 1896

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Quartz.NET作业调度框架详解

Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 你曾经需要应用执行一个任务吗?这个任务每天或每周星...

dingshi6331的博客 276

Quartz.Net框架实现表监听和作业调度

Quartz.Net框架实现表监听和作业调度 最近在项目中需要用到Quartz框架,该框架有java版本也有.Net版本的,后者的版本叫Quartz.Net,和java版本的用法几乎是一样的,只是底层代码的实现采用C#。 首先说下具体需求吧:当数据库某些指定表发生数据变化(增删改),则触发一个作业,该作业又根据选定的定时信息进行调度 比如:从某刻时候开始 每隔一秒钟执行一次作业,直到某个指定的时间...

qq_43364342的博客 726

详细讲解Quartz.NET

     Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 你曾经需要应用执行一个任务吗?这个任务每

陈锋的专栏 2076

[Net分享] Quartz作业调度框架

1 什么是Quartz.NET? Quartz是一个功能齐全的开源作业调度系统,可以与几乎任何其他软件系统集成或一起使用。 2 为什么需要Quartz.NET? .NET Framework通过System.Timers.Timer类具有“内置”计时器功能-为什么有人使用Quartz而不是这些标准功能? 原因有很多!这里有一些: 计时器没有持久性机制。 计时器的时间安排不灵活(只能设置开始时间和重复间隔,没有基于日期,一天中的时间等信息)。 计时器不使用线程池(每个计时器一个线程) 计时器没有真正的管理方案

混迹自留地 273

【亲测免费】Quartz.NET - 基于 .NET 的可扩展作业调度框架

Quartz.NET 是一款强大的企业级作业调度框架,专为 .NET 平台设计,能够帮助开发者轻松实现定时任务、计划任务和复杂的作业调度需求。无论是简单的周期性任务还是复杂的企业级调度场景,Quartz.NET 都能提供稳定可靠的解决方案,是 .NET 生态中作业调度领域的首选工具。 ## 🌟 为什么选择 Quartz.NET? Quartz.NET 作为一款成熟的开源框架,具有以下核心优势

gitblog_00010的博客 593

.NET Core Quartz使用cron表达式实现定时任务

NET Core应用中使用Quartz.NET和cron表达式实现定时任务是一种非常有效的方式来执行周期性的后台任务。以下是如何在.NET Core应用中使用Quartz.NET以及如何配置cron表达式来调度任务的步骤。

weixin_42098295的博客 1407

Quartz.NET实现作业调度

Quartz.NET实现作业调度 目录 一、Quartz.NET介绍 二、依赖框架 2.1、使用Nuget添加引用 2.1.0、创建一个项目 2.1.1、安装Nuget 2.1.2、修改Nuget镜像 2.1.3、使用nuget安装Quartz.NET 2.2、手动引用 三、应用框架 3.1、定义要执行的任务 3.2、创建一个调度器 3....

cxu123321的博客 197

开源作业调度框架 - Quartz.NET - Cron表达式测试

昨天简单写了一下如何使用Quzrtz.NET。 那么问题来了,我设置了Cron表达式之后如何知道是表达式是否按照预期的时间执行了呢? 我找到了些Cron表达式工具生成了表达式,确发现它们基本上没有进行校验是否正确。 那么好,我们来自己实现一个吧。 首先我们建立了一个项目并引用Quartz.NET的dll类库 然后稍微制作一下UI吧,放一个文本框和显示列表以及一个按钮。 ...

aiwenia0512的博客 217

Quartz.NET作业调度框架:核心原理与实战应用

作业调度系统是现代软件开发中的关键组件,用于自动化执行定时任务。其核心原理基于触发器机制和任务队列,通过精确的时间控制实现业务逻辑的自动化执行。Quartz.NET作为.NET生态中最成熟的调度框架,提供了完整的调度机制和持久化支持,技术价值体现在高可靠性和灵活性上。典型应用场景包括电商促销定时、数据统计任务等需要精确时间控制的业务场景。框架支持RAM和数据库两种存储模式,其中AdoJobStore配合SQL Server等关系型数据库可实现生产级可靠性。通过DisallowConcurrentExecut

注重长远 天天积累 cqujsjcyj 460
上一篇: Quartz.NET(作业调度框架) 学习笔记(二)【Hello Job】
下一篇: 批量导入Sql脚本
黄瓜黄瓜
博客等级 码龄15年 27粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值