quartz cron表达式

Spring Boot 2.X(十二):定时任务(转载)

99封情书 提交于 2019-12-02 22:55:24
简介 定时任务是后端开发中常见的需求,主要应用场景有定期数据报表、定时消息通知、异步的后台业务逻辑处理、日志分析处理、垃圾数据清理、定时更新缓存等等。 Spring Boot 集成了一整套的定时任务工具,让我们专注于完成逻辑,剩下的基础调度工作将自动完成。 通用实现方式 实现方式 描述 java .util.Timer Timer 提供了一个 java.util.TimerTask 任务支持任务调度。该方式只能按指定频率执行,不能在指定时间运行。由于功能过于单一,使用较少。 Quartz Quartz 是一个功能比较强大的调度器,支持在指定时间运行,也可以按照指定频率执行。缺点是使用起来相对麻烦。 Spring 框架自带的 Schedule 模块 可以看做是轻量级的 Quartz 静态定时任务 @Component @EnableScheduling public class StaticScheduleJob { /** * 上次开始执行时间点后5秒再次执行 */ @Scheduled(fixedRate = 5000) public void job3() { System.out.println("执行任务job3:"+DateUtil.formatDateTime(new Date())); } /** * 上次执行完毕时间点后3秒再次执行 */ @Scheduled

Quartz中时间表达式的设置-----corn表达式

倾然丶 夕夏残阳落幕 提交于 2019-12-02 04:54:27
Quartz中时间表达式的设置-----corn表达式 时间格式: <!-- s m h d m w(?) y(?) -->, 分别对应: 秒>分>小时>日>月>周>年, 举例: 1.每天什么时候执行: <value>0 59 23 * * ?</value>: 如下为每天23:59:00开始执行 <value>0 1,2,3 11,12 * * ? </value>: 每天11:01,11:02,11:03; 12:01,12:02,12:03分执行任务 2.每隔多久执行: 汇总说明: Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下: ●星号(*):可用在所有字段中,表示对应时间域的每一个时刻,例如,*在分钟字段时,表示“每分钟”; ●问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符; ●减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12; ●逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五; ●斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用*/y

quartz CronExpression表达式

梦想的初衷 提交于 2019-11-30 20:50:17
一个cron表达式有至少6个(或7个)由空格分隔的时间元素。 按顺序依次为: 1、秒(0~59) 2、分(0~59) 3、时(0~23) 4、日(0~31,但需要考虑指定月的天数) 5、月(0~11) 6、周(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7、年(1970-2099) 其中每个元素可以是一个值(如6)、一个连续区间(9-12)、一个间隔时间(8-18/4)(/表示每隔4小时)、一个列表(1,3,5)或通配符。 “*”字符代表所有可能的值因此,“*”在子表达式“月”中表示每个月的含义,“*”在子表达式“周”中表示星期的每一天。 由于"月份中的日期"和"周中的日期"这两个元素互斥的,必须要对其中一个设置?. 有些子表达式能包含一些范围或列表例如:子表达式“周”可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT” “/”字符用来指定数值的增量例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟; 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样; “?”字符仅被用于天(月)和天(周)两个子表达式中,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”; “L” 字符仅被用于天(月)和天(周

quartz 时间配置

心不动则不痛 提交于 2019-11-30 12:50:17
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y(?) -->, 分别对应: 秒>分>小时>日>月>周>年, 举例: 1.每天什么时候执行: <value>0 59 23 * * ?</value>: 如下为每天23:59:00开始执行 <value>0 1,2,3 11,12 * * ? </value>: 每天11:01,11:02,11:03; 12:01,12:02,12:03分执行任务 2.每隔多久执行: 汇总说明: Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下: ●星号(*):可用在所有字段中,表示对应时间域的每一个时刻,例如,*在分钟字段时,表示“每分钟”; ●问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符; ●减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12; ●逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五; ●斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15

java quartz 中的时间格式

自作多情 提交于 2019-11-30 04:49:48
上一文中提到 Cron触发器可以接受一个表达式来指定执行JOB,下面看看这个表达式的语法。 cron 表达式的格式 Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。 在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上。Quartz 用 cron 表达式存放执行计划。引用了 cron 表达式的 CronTrigger 在计划的时间里会与 job 关联上。 另一个与 UNIX cron 表达式的不同点是在表达式中支持域的数目。UNIX 给出五个域(分、时、日、月和周),Quartz 提供七个域。表 5.1 列出了 Quartz cron 表达式支持的七个域。 表 5.1. Quartz Cron 表达式支持到七个域 名称 是否必须 允许值 特殊字符 秒 是 0-59 , - * / 分 是 0-59 , - * / 时 是 0-23 , - * / 日 是 1-31 , - * ? / L W C 月 是 1-12 或 JAN-DEC , - * / 周 是 1-7 或 SUN-SAT , - * ? /

cron表达式

你。 提交于 2019-11-29 20:58:27
最近工作碰到个小问题,需要获取cron表达式的上一次最近运行的时间,找了好一会没找到获取的方法,下载了Quartz源码,有点乱,就没仔细看,其实这个问题完全可以从设计上规避掉,在表里存下每次运行后的下次运行时间,后面只需要判断当前时间和表里存的下次运行时间比较即可,附 获取cron表达式下次运行时间C#代码,这个在网上比较多,我个人记录下 public static DateTime GetNextRunTime(string cron) { var dt = GetCronSchdule(cron, 1, DateTimeOffset.Now); return dt.First(); } /// <summary> /// Corn表达式的运行时间 /// </summary> public static List<DateTime> GetCronSchdule(string cron, int times, DateTimeOffset startTime) { List<DateTime> timeSchdule = new List<DateTime>(); if (!CronExpression.IsValidExpression(cron)) { return timeSchdule; } ITrigger trigger1 = TriggerBuilder

quartz cron表达式

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 03:44:56
Cron表达式是由6所需的字段和一个可选字段由空格分隔 Cron表达式的格式:秒 分 时 日 月 周 年(可选) Field Name Allowed Values Allowed Special Characters Seconds 0-59 , - * / Minutes 0-59 , - * / Hours 0-23 , - * / Day-of-month 1-31 , - * ? / L W Month 1-12 or JAN-DEC , - * / Day-of-Week 1-7 or SUN-SAT , - * ? / L # Year (Optional) empty, 1970-2199 , - * / “*”字符被用来指定所有的值。如:"*"在分钟的字段域里表示“每分钟”。 “?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。 由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置一个问号. “-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。"0 0 9 ? * 2-6" 周一到周五每天上午9点 “,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。 “/”字符用于指定增量。如:

05.Quartz cron 表达式详解

流过昼夜 提交于 2019-11-28 18:18:48
1. 简介 cron 是已经存在很长时间的Unix的一个工具, 它的功能很强大, 也得到了时间的证明. Quartz 的CronTrigger 也是基于cron 进行调度的 CronTrigger 使用cron 表达式来定义调度的时间规则 cron 表达式功能时非常强大的, 也是非常复杂的, 由六段或七段组成, 容易产生困惑. 2. cron 表达式格式 cron 表达式由空格分割的六段或七段组成, 每一段代表的时间单位不同, 取值也有所不同. 星期缩写: SUN, MON, TUE, WED, THU, FRI ,SAT 月份缩写: JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC 2.1 字段取值范围 序号 含义 取值范围 允许特殊字符 1 Seconds(秒) 0-59 , - * / 2 Minutes(分) 0-59 , - * / 3 Hours(时) 0-23 , - * / 4 Day-of-Month(日) 1-31 , - * ? / L W LW 5 Month(月) 0-11, 或JAN-DEC , - * / 6 Day-of-Week(星期) 1-7(1代表周日), 或SUN-SAT , - * ? / L # 7 Year(年) , - * / 2.2 特殊符号 * :

Spring定时任务(@Scheduled)

為{幸葍}努か 提交于 2019-11-28 04:57:54
一、使用Spring的@Scheduled实现定时任务 [1] 1、Spring配置文件xmlns加入 xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation中加入 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd" 2、 spring 扫描注解的配置 <context:component-scan base-package="com.imwoniu.*" /> 3、任务扫描注解 <task:executor id="executor" pool-size="5" /> <task:scheduler id="scheduler" pool-size="10" /> <task:annotation-driven executor="executor" scheduler="scheduler" /> 4、代码实现: 注解@Scheduled 可以作为一个触发源添加到一个方法中,例如,以下的方法将以一个固定延迟时间5秒钟调用一次执行,这个周期是以上一个调用任务的 完成时间 为基准,在上一个任务完成之后,5s后再次执行:

spring 定时任务@Scheduled

◇◆丶佛笑我妖孽 提交于 2019-11-28 04:57:06
1、配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd" default-autowire="byName" default-lazy-init="false"> <!-- 定时任务相关配置 --> <task:executor id="executor" pool-size="10" queue-capacity="128"/> <task:scheduler