spring cloud 使用 @Scheduled注解形式的定时任务

1\   在入口类 (***Application) 添加@EnableScheduling打开定时任务功能,  @EnableScheduling为开启计划任务支持;

2\   新建一个Java类添加@Component注解, 在需要做定时任务的函数上添加@Scheduled注解,支持fixedRate、cron和fixedDelay等参数;

   ① fixedRate  是从上一次方法执行开始的时间算起,如果上一次方法阻塞住了,下一次也是不会执行,但是在阻塞这段时间内累计应该执行的次数,当不再阻塞时,一下子把这些全部执行掉,而后再按照固定速率继续执行。 任务时长超过 fixedRate 时不会启动多个任务实例, 会在上次任务执行完后立即启动下一轮。除非这个 方法用 @Async 注解了,使得任务不在线程池中执行,而是每次创建新线程来执行。

  ② fixedDelay  是以上一次方法执行完开始算起,如上一次方法执行阻塞住了,那么直到上一次执行完,并间隔给定的时间后,执行下一次。

 ③ cron   这是一个时间表达式,可以通过简单的配置就能完成各种时间的配置;一个cron表达式有至少6个(或7个)有空格分隔的时间元素。

依次是

       秒                         0-59                                                  , - * /
       分                         0-59                                                  , - * /
       小时                      0-23                                                 , - * /
       日期                      1-31                                                 , - * ? / L W C
       月份                      1-12 或者 JAN-DEC                     , - * /
       星期                      1-7 或者 SUN-SAT                       , - * ? / L C #
       年(可选)           留空, 1970-2099                           , - * /

"*"字符代表所有可能的值
"/"字符用来指定数值的增量
"-"代表在指定的范围内触发,比如”25-45”代表从25秒开始触发到45秒结束触发,每隔1秒触发1次
"," 代表在指定的秒数触发,比如”0,15,45”代表0秒、15秒和45秒时触发任务
"?"字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
"L" 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写如果在“L”前有具体的内容,它就具有其他的含义了。例如:“6L”表示这个月的倒数第6天    注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
"W" 字符代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。。
"C":代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天

例:

"0 0 0 * * ?" 每天0时触发任务
“30 * * * * ?” 每半分钟触发任务
“30 10 * * * ?” 每小时的10分30秒触发任务
“30 10 1 * * ?” 每天1点10分30秒触发任务
15,30,45 * * * * ?” 每15秒,30秒,45秒时触发任务
“15-45 * * * * ?” 15到45秒内,每秒都触发任务
“15/5 * * * * ?” 每分钟的每15秒开始触发,每隔5秒触发一次
“15-30/5 * * * * ?” 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
“0 0/3 * * * ?” 每小时的第0分0秒开始,每三分钟触发一次
“0 15 10 ? * MON-FRI” 星期一到星期五的10点15分0秒触发任务
“0 15 10 L * ?” 每个月最后一天的10点15分0秒触发任务
“0 15 10 LW * ?” 每个月最后一个工作日的10点15分0秒触发任务
“0 15 10 ? * 5L” 每个月最后一个星期四的10点15分0秒触发任务
“0 15 10 ? * 5#3” 每个月第三周的星期四的10点15分0秒触发任务

你可能感兴趣的:(spring cloud 使用 @Scheduled注解形式的定时任务)