zoukankan      html  css  js  c++  java
  • 通过Quartz 配置定时调度任务:使用cron表达式配置时间点

    Cron官网入口

    在后台经常需要一些定时处理的任务,比如微信相关应用所需的access_token,就要定时刷新,官方返回的有效性是7200s,也就是2小时,但是为了保险起见,除了在发现access_token失效后要主动发起请求更新access_token,还需要通过定时器刷新,这样才能最大程度的保障access_token可以不间断使用。

    比如下图所示,则会在每小时的0分0秒发起调用:
    在这里插入图片描述

    cron 表达式必须为6个参数,分别表示 :{秒} {分} {时} {日} {月} {周} {年(可选)}

    ┌────────────── 秒 (取值范围:0-59)
    │ ┌───────────── 分 (取值范围:0-59)
    │ │ ┌───────────── 时 (取值范围:0 - 23)
    │ │ │ ┌───────────── 日(取值范围:1 - 31)
    │ │ │ │ ┌───────────── 月(取值范围:1 - 12)
    │ │ │ │ │ ┌───────────── 周(取值:1 - 7) (1是周日,2是周一,以此类推)
    │ │ │ │ │ │
    │ │ │ │ │ │
    * * * * * * 
    

    Cron表达式范例:

    表达式 含义
    0/1 * * * * ? 每1秒执行一次
    10/1 0/1 * * * ? 从10秒整开始每隔1秒每秒执行一次,
    如果当前时间的秒数小于10,那么当前分钟的10秒整执行,
    否则到下一分钟的10秒整才执行
    0 0/1 * * * ? 每分钟0秒整执行一次
    0 0 0/1 * * ? 每小时0分0秒执行一次
    0 0 1 1-31/1 * ? 每天1点0分0秒执行一次
    0 0 0,6,12,18 * * ? 每天的0点整、6点整、12点整、18点整各执行一次
    0 0 1-2 1 * ? 每个月1号1点整,2点整各执行一次
    0 0 23 L * ? 每个月1最后一天的23点整执行一次

    下面让我们简单了解下cron表达式的规则:

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式
    Seconds Minutes Hours DayofMonth Month DayofWeek Year或
    Seconds Minutes Hours DayofMonth Month DayofWeek


    每一个域可出现的字符如下:
    Seconds:可出现", - * /“四个字符,有效范围为0-59的整数
    Minutes:可出现”, - * /“四个字符,有效范围为0-59的整数
    Hours:可出现”, - * /“四个字符,有效范围为0-23的整数
    DayofMonth:可出现”, - * / ? L W C"八个字符,有效范围为0-31的整数
    Month:可出现", - * /“四个字符,有效范围为1-12的整数或JAN-DEc
    DayofWeek:可出现”, - * / ? L C #“四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
    Year:可出现”, - * /"四个字符,有效范围为1970-2099年

    上面有些子表达式能包含一些范围或列表,具体解释如下:

    例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”
    
    “*”字符代表所有可能的值
    
    因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天
    
    
    “/”字符用来指定数值的增量 
    例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 
    在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“32343”)的含义一样
    
    
    “?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 
    当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
    
    “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 
    但是它在两个子表达式里的含义是不同的。 
    在天(月)子表达式中,“L”表示一个月的最后一天 
    在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT
    
    如果在“L”前有具体的内容,它就具有其他的含义了
    
    例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最后一个星期五 
    注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
    

    分享一个在线生成cron表达式的网站:
    http://cron.qqe2.com/
    在这里插入图片描述

  • 相关阅读:
    数据库之ORACLE常见基础操作
    数据库基础之Oracle函数
    Snuketoon [ABC217H]
    Cards [CF1278F]
    Squirrel Migration [ARC087F]
    Xor Query [ABC223H]
    Three Permutations [ABC214G]
    雨林跳跃[APIO2021]
    Redis5.0 主从模式和高可用 搭建和测试报告
    Redis5 压力测试结果反馈报告
  • 原文地址:https://www.cnblogs.com/xiaocy66/p/10589262.html
Copyright © 2011-2022 走看看