System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于cron表达式的定时任务调度方法及系统技术方案_技高网

一种基于cron表达式的定时任务调度方法及系统技术方案

技术编号:40087200 阅读:9 留言:0更新日期:2024-01-23 15:38
本发明专利技术涉及计算机应用技术领域,其公开了一种基于cron表达式的定时任务调度方法及系统,解决传统基于cron表达式的定时任务调度在面对复杂业务要求存在的逻辑复杂和浪费服务器资源的问题。本发明专利技术通过拆分整个定时任务,将每一次执行视为一个独立的定时子任务,每个独立的定时子任务在系统中只执行一次,每次执行完毕后根据业务需求计算下次执行的时间,然后删除本次执行的定时子任务,根据下次执行时间开启新的定时子任务。本发明专利技术适用于定时任务调度。

【技术实现步骤摘要】

本专利技术涉及计算机应用,具体涉及一种基于cron表达式的定时任务调度方法及系统


技术介绍

1、目前,定时任务调度主要依赖cron表达式,cron表达式是一个时间表达式,用于在指定的时间间隔内运行程序。它由6个或7个字段组成,每个字段表示不同的时间单位,至少包括秒、分钟、小时、天、月和星期,也可以包含年的字段。

2、cron表达式的格式如下:秒分时日月星期年,其中可以使用通配符“*”和“?”进行时间的模糊匹配,例如002**?表示每天2点整执行一次任务。在定时任务调度应用时,根据业务要求构建符合的表达式,然后使用定时任务调度框架,例如org.quartz框架,根据cron表达式触发定时任务实行定时任务调度。

3、在传统技术中,为一个业务逻辑生成一个对应的模糊匹配的cron表达式,然后再根据该cron表达式触发一个定时任务,但是cron表达式对时间表达有范围限制,例如:秒的字段是0-59范围内的整数,这样的方式在遇到特殊且复杂的需求时就会变得非常麻烦。比如:某任务需要在工作日内每隔90秒执行一次,则一个cron表达式就无法实现,需要设置两个cron表达式并同时开启两个定时任务,一个在秒数为0时触发,一个在秒数为30时触发。同时,若间隔时间是可变项,那么在其发生改变时还需要根据它生成多个不同的cron表达式,开启多个定时任务,极大地造成了业务的逻辑复杂混乱和服务器资源的浪费。


技术实现思路

1、本专利技术所要解决的技术问题是:提出一种基于cron表达式的定时任务调度方法及系统,解决传统基于cron表达式的定时任务调度在面对复杂业务要求存在的逻辑复杂和浪费服务器资源的问题。

2、本专利技术解决上述技术问题采用的技术方案是:

3、一方面,本专利技术提供了一种基于cron表达式的定时任务调度方法,包括以下步骤:

4、s1、创建并保存定时任务配置信息;

5、s2、根据所述定时任务配置信息计算任务首次执行时间;

6、s3、基于任务首次执行之间生成不含通配符的cron表达式;

7、s4、利用所述cron表达式开启本次定时子任务;

8、s5、在到达执行时间时,定时子任务执行具体业务并保存执行信息;

9、s6、根据所述定时任务配置信息计算下一次执行时间;

10、s7、基于所述下一次执行时间生成新的不含通配符的cron表达式;

11、s8、删除本次定时子任务,根据新的cron表达式开启新的定时子任务,在到达执行时间时,新的定时子任务执行具体业务并保存执行信息,返回步骤s6。

12、进一步的,步骤s1中,所述定时任务配置信息包括定时任务的触发时间范围和间隔时间信息。

13、进一步的,步骤s6中,根据所述定时任务配置信息计算下一次执行时间,包括:将当前定时子任务的执行时间加上定时任务配置信息中的间隔时间,获得下一次执行时间。

14、进一步的,步骤s6还包括:判断下一次执行时间是否超出定时任务配置信息中的定时任务的触发时间范围,若是,则关闭定时任务,不再开启新的定时子任务,结束流程;否则,进入步骤s7。

15、进一步的,该方法还包括:在定时任务调度方法执行过程中,若定时任务配置信息发生修改,则删除当前定时子任务,直接根据修改后的配置信息计算下次执行时间,并生成新的不含通配符的cron表达式,而后开启新的定时子任务。

16、另一方面,本专利技术还提供了一种基于cron表达式的定时任务调度系统,包括:

17、配置信息模块,用于记录定时任务配置信息,所述定时任务配置信息可被用户修改;

18、定时任务模块,用于根据定时任务配置信息计算首次执行时间,生成不含通配符的cron表达式,利用所述cron表达式开启本次定时子任务,在到达执行时间时,执行具体业务;然后计算下一次执行时间,根据下一次执行时间生成新的不含通配符的cron表达式开启新的定时子任务;

19、定时任务执行信息模块,用于记录定时子任务执行的时间、cron表达式和执行结果。

20、进一步的,所述定时任务配置信息包括定时任务的触发时间范围和间隔时间信息。

21、进一步的,所述定时任务模块计算下一次执行时间,具体为:定时任务计算模块将当前定时子任务的执行时间加上定时任务配置信息中的间隔时间,获得下一次执行时间。

22、进一步的,所述定时任务模块还用于:判断下一次执行时间是否超出定时任务配置信息中的定时任务的触发时间范围,若是,则关闭定时任务,不再开启新的定时子任务。

23、进一步的,所述定时任务模块还用于:若定时任务配置信息发生修改,则删除当前定时子任务,直接根据修改后的配置信息计算下次执行时间,并生成新的不含通配符的cron表达式,而后开启新的定时子任务。

24、本专利技术的有益效果是:

25、本专利技术通过对定时任务进行拆分,将对下次执行时间的计算从cron表达式中剥离出来,生成新的cron表达式,有效地解决了cron表达式在面对复杂定时任务触发时间时造成的表达式生成逻辑复杂和同时开启多个定时任务所造成的服务器资源浪费。

本文档来自技高网...

【技术保护点】

1.一种基于cron表达式的定时任务调度方法,其特征在于,包括以下步骤:

2.如权利要求1所述的一种基于cron表达式的定时任务调度方法,其特征在于,

3.如权利要求2所述的一种基于cron表达式的定时任务调度方法,其特征在于,

4.如权利要求2所述的一种基于cron表达式的定时任务调度方法,其特征在于,

5.如权利要求2-4任意一项所述的一种基于cron表达式的定时任务调度方法,其特征在于,该方法还包括:在定时任务调度方法执行过程中,若定时任务配置信息发生修改,则删除当前定时子任务,直接根据修改后的配置信息计算下次执行时间,并生成新的不含通配符的cron表达式,而后开启新的定时子任务。

6.一种基于cron表达式的定时任务调度系统,其特征在于,包括:

7.如权利要求6所述的一种基于cron表达式的定时任务调度系统,其特征在于,

8.如权利要求6所述的一种基于cron表达式的定时任务调度系统,其特征在于,

9.如权利要求6所述的一种基于cron表达式的定时任务调度系统,其特征在于,p>

10.如权利要求6-9任意一项所述的一种基于cron表达式的定时任务调度系统,其特征在于,所述定时任务模块还用于:若定时任务配置信息发生修改,则删除当前定时子任务,直接根据修改后的配置信息计算下次执行时间,并生成新的不含通配符的cron表达式,而后开启新的定时子任务。

...

【技术特征摘要】

1.一种基于cron表达式的定时任务调度方法,其特征在于,包括以下步骤:

2.如权利要求1所述的一种基于cron表达式的定时任务调度方法,其特征在于,

3.如权利要求2所述的一种基于cron表达式的定时任务调度方法,其特征在于,

4.如权利要求2所述的一种基于cron表达式的定时任务调度方法,其特征在于,

5.如权利要求2-4任意一项所述的一种基于cron表达式的定时任务调度方法,其特征在于,该方法还包括:在定时任务调度方法执行过程中,若定时任务配置信息发生修改,则删除当前定时子任务,直接根据修改后的配置信息计算下次执行时间,并生成新的不含通配符的cron表达式,而后开启新的定时子...

【专利技术属性】
技术研发人员:李明湖
申请(专利权)人:四川启睿克科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1