Quartz任务调度(2)CronTrigger定制个性化调度方案
Cron表达式
1. 时间字段与基本格式
Cron表达式有6或7个空格分割的时间字段组成:
| 位置 | 时间域名 | 允许值 | 允许的特殊字符 |
|---|---|---|---|
| 1 | 秒 | 0-59 | ,-*/ |
| 2 | 分支 | 0-59 | ,-*?/ |
| 3 | 小时 | 0-23 | ,-*/ |
| 4 | 日期 | 1-31 | ,-*/LWC |
| 5 | 月份 | 1-12或 JAN-DEC | ,-*/ |
| 6 | 星期 | 1-7 或 SUN-SAT | ,-*?/LC# |
| 7 | 年(可选) | 1970-2099 | ,-*/ |
在月份和星期中,我们也可以使用英文单词的缩写形式
2. 特殊字符
在Cron表达式的时间字段中,除允许设置数值外,还能你使用一些特殊的字符,提供列表、范围、通配符等功能
1. 星号(*)
可用在所有字段下,表示对应时间域名的每一个时刻,如*用在分钟字段,表示“每分钟”。
2. 问号(?)
只能用在日期和星期字段,代表无意义的值,比如使用L设定为当月的最后一天,则配置日期配置就没有意义了,可用?作占位符的作用。
3. 减号(-)
表示一个范围,如在日期字段5-10,表示从五号到10号,相当于使用逗号的5,6,7,8,9,10
4. 逗号(,)
表示一个并列有效值,比如在月份字段使用JAN,DEC表示1月和12月
5. 斜杠(/)
x/y表示一个等步长序列,x为起始值,y为增量步长值,如在小时使用1/3相当于1,4,7,10当时用*/y时,相当于0/y
6. L
L(Last)只能在日期和星期字段使用,但意思不同。在日期字段,表示当月最后一天,在星期字段,表示星期六(如果按星期天为一星期的第一天的概念,星期六就是最后一天。如果L在星期字段,且前面有一个整数值X,表示“这个月的最后一个星期X”,比如3L表示某个月的最后一个星期二
7. W
选择离给定日期最近的工作日(周一至周五)。例如你指定“15W”作为day of month字段的值,就意味着“每个月与15号最近的工作日”。所以,如果15号是周六,则触发器会在14号(周五)触发。如果15号是周日,则触发器会在16号(周一)触发。如果15号是周二,则触发器会在15号(周二)触发。但是,如果你指定“1W”作为day of month字段的值,且1号是周六,则触发器会在3号(周一)触发。quartz不会“跳出”月份的界限。
8. LW组合
在日期字段可以组合使用LW,表示当月最后一个工作日(周一至周五)
9. 井号(#)
只能在星期字段中使用指定每月第几个星期X。例如day of week字段的“6#3”,就意味着“每月第3个星期五”(day3=星期五,#3=第三个);“2#1”就意味着“每月第1个星期一”;“4#5”就意味着“每月第5个星期3。需要注意的是“#5”,如果在当月没有第5个星期三,则触发器不会触发。
10. C
只能在日期和星期字段中使用,表示计划所关联的诶其,如果日期没有被关联,相当于日历中的所有日期,如5C在日期字段相当于5号之后的第一天,1C在日期字段使用相当于星期填后的第一天
3. 一些实例
Cron表达式对特殊字符的大小写不敏感,对代表星期的缩写英文大小写也不敏感。如MON和mon是一样的
| cron表达式 | 含义 |
|---|---|
| 0 0 12 * * ? | 每天12点整触发一次 |
| 0 15 10 ? * * | 每天10点15分触发一次 |
| 0 15 10 * * ? | 每天10点15分触发一次 |
| 0 15 10 * * ? * | 每天10点15分触发一次 |
| 0 15 10 * * ? 2005 | 2005年内每天10点15分触发一次 |
| 0 * 14 * * ? | 每天的2点整至2点59分,每分钟触发一次 |
| 0 0/5 14 * * ? | 每天的2点整至2点55分,每5分钟触发一次 |
| 0 0/5 14,18 * * ? | 每天的2点整至2点55分以及18点整至18点55分,每5分钟触发一次 |
| 0 0-5 14 * * ? | 每天的2点整至2点5分,每分钟触发一次 |
| 0 10,44 14 ? 3 WED | 每年3月的每个星期三的2点10分以及2点44分触发一次 |
| 0 15 10 ? * MON-FRI | 每月周一、周二、周三、周四、周五的10点15分触发一次 |
| 0 15 10 15 * ? | 每月15的10点15分触发一次 |
| 0 15 10 L * ? | 每月最后一天的10点15分触发一次 |
| 0 15 10 ? * 6L | 每月最后一个周五的10点15分触发一次 |
| 0 15 10 ? * 6L | 每月最后一个周五的10点15分触发一次 |
| 0 15 10 ? * 6L 2002-2005 | 2002年至2005年间,每月最后一个周五的10点15分触发一次 |
| 0 15 10 ? * 6#3 | 每月第三个周五的10点15触发一次 |
| 0 0 12 1/5 * ? | 每月1号开始,每5天的12点整触发一次 |
| 0 11 11 11 11 ? | 每年11月11日11点11分触发一次 |
使用示例
在quartz1.+版本中,我们通过如下方法创建CronTrigger
//定义调度触发规则,每天上午10:15执行
CronTrigger cornTrigger=new CronTrigger("cronTrigger","triggerGroup");
//执行规则表达式
cornTrigger.setCronExpression("0 15 10 * * ? *");
而在2.+版本中,则通过如下方式创建
//使用cornTrigger规则 每天10点42分
Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")
.withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *"))
.startNow().build();
Quartz任务调度(2)CronTrigger定制个性化调度方案的更多相关文章
- Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...
- Quartz任务调度基本使用
转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...
- Quartz任务调度快速入门(转)
转自http://www.blogjava.net/baoyaer/articles/155645.html 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调 ...
- Quartz任务调度快速入门
Quartz任务调度快速入门 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的 ...
- Quartz任务调度快速入门(转)
概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述: ●Jo ...
- Quartz任务调度实践
最近在写一个任务调度程序,需要每隔几秒查询数据库,并取出数据做一些处理操作.使用到了Quartz任务调度框架. 基本概念 Quartz包含几个重要的对象,分别为任务(Job),触发器(Trigger) ...
- Quartz任务调度入门
Quartz任务调度入门 了解Quartz体系结构Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念 ...
- (转)Quartz任务调度(1)概念例析快速入门
http://blog.csdn.net/qwe6112071/article/details/50991563 Quartz框架需求引入 在现实开发中,我们常常会遇到需要系统在特定时刻完成特定任务的 ...
- Quartz任务调度(1)概念例析快速
实例解析概念 在quartz中,有几个核心类和接口:Job.JobDetail.Trigger.Calendar.Scheduler.下面我们结合实例来分析这些类的角色定位.现在我们有一个新闻网站,它 ...
随机推荐
- MapReduce学习总结之Combiner、Partitioner、Jobhistory
一.Combiner 在MapReduce编程模型中,在Mapper和Reducer之间有一个非常重要的组件,主要用于解决MR性能瓶颈问题 combiner其实属于优化方案,由于带宽限制,应该尽量ma ...
- Python+Requests+Re(正则)爬取某糗事百科图片(数据分析一)
1.博客目前在学习爬虫课程,使用正则表达式来爬取网页的图片信息 2.下面我们一起来回归下Python中的正则使用方式/方法 3.糗事百科图片爬取源码如下: import requestsimport ...
- 极致简洁的微前端框架-京东MicroApp开源了
前言 MicroApp是一款基于类WebComponent进行渲染的微前端框架,不同于目前流行的开源框架,它从组件化的思维实现微前端,旨在降低上手难度.提升工作效率.它是目前市面上接入微前端成本最低的 ...
- Allure测试框架 python
关于Allure Allure是一个report框架,可以基于一些测试框架生成测试报告,比较常用的一般是Junit/Testng框架: Allure 生成的报告样式简洁美观,同时又支持中文: Allu ...
- odoo12学习之javascript-----2
用例子:Creating a new field widget 这可能是一个非常常见的用例:我们希望以非常具体(可能依赖于业务)的方式在表单视图中显示一些信息. 例如,假设我们要根据某些业务条件更改文 ...
- 第十一篇 -- QMainWindow与QAction(斜体-粗体-下划线)
效果图: ui_mainWindow.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file ' ...
- 面试问题记录 二 (数据库、Linux、Redis)
面试问题记录 二 (数据库.Linux.Redis) 前言 接着上次的面试问题记录,在最后还有几道问的数据结构方面的知识点要补充 还是那句话:如果文中解释有明显错误,劳烦请及时指正我,在这不胜感激!! ...
- Capture One 21 Pro 14.0.2.36中文版安装教程
Capture One 21 Pro 14.0.2.36 for windows是一款由丹麦PHASE ONE飞思公司推出的.非常专业强大的图像处理编辑工具. 下载 Capture One 21 Pr ...
- @ControllerAdvice全局异常处理不起作用原因及解决办法
这段时间使用springboot搭建基础框架,作为springboot新手,各种问题都有. 当把前端框架搭建进来时,针对所有controller层的请求,所发生的异常,需要有一个统一的异常处理,然后返 ...
- SaltStack 水平权限绕过漏洞(CVE-2020-11651)
影响版本 SaltStack < 2019.2.4 SaltStack < 3000.2 poc git clone https://github.com/jasperla/CVE-202 ...