[发明专利]一种自动化弹性任务排程方法在审
申请号: | 202010045139.3 | 申请日: | 2020-01-16 |
公开(公告)号: | CN111274011A | 公开(公告)日: | 2020-06-12 |
发明(设计)人: | 刘柏辰 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 刘雪萍 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自动化 弹性 任务 方法 | ||
本发明公开一种自动化弹性任务排程方法,由Java定时任务调度工具实现任务排程,包括:关闭服务前,将排程任务及其相关参数保存或更新到数据库;重启服务时,从数据库中取出所保存的排程任务,若排程任务有下次触发,则根据所保存的相关参数获得其重排程触发时间后,将其加入任务调度器进行重排程。本发明在保证弹性化排程的前提下,可达到关闭服务任务也不会出现丢失,若在关闭服务错失trigger的情况下,重新启动服务也能计算出下次trigger时间。
技术领域
本发明涉及任务排程领域,具体涉及一种自动化弹性任务排程方法。
背景技术
现行的相关任务排程大都是使用Spring的annotation技术或xml的方式将Trigger种类以及Trigger时间直接写在代码当中,进而简易地设置Trigger种类以及时间达到定时触发任务的目的。
虽然通过Spring的注解以及xml方式达到定时任务排程相当快速以及简洁,且有着关闭服务不会丢失任务的优点,但若使用者需要经常性的更改Trigger种类、Trigger时间等定时任务内容却不容易,必须时常更改代码,较不弹性化。
Java定时排程任务工具(Scheduler)可以改善Spring定时排程任务系统不弹性这项缺点,但关闭服务后任务的丢失,却是它的缺点,重新启动服务时使用者必须再一次手动重新设置定时任务排程,若设置的排程任务数量一多也相当耗费时间不具效率,即使使用数据库持久化,若数据库记录下次trigger时间是服务关闭时,也无法依照原本设置的trigger时间计算重新启动服务的trigger时间。
发明内容
为解决上述问题,本发明提供一种自动化弹性任务排程方法,弹性化排程的同时达到即使关闭服务任务也不会出现丢失,若在关闭服务错失trigger的情况下,重新启动服务也能计算出下次trigger时间。
本发明的技术方案是:一种自动化弹性任务排程方法,由Java定时任务调度工具实现任务排程,包括:
关闭服务前,将排程任务及其相关参数保存或更新到数据库;
重启服务时,从数据库中取出所保存的排程任务,若排程任务有下次触发,则根据所保存的相关参数获得其重排程触发时间后,将其加入任务调度器进行重排程。
进一步地,所述相关参数包括新增任务所需参数、下次触发时间、上次触发时间、Job已经执行的次数、job status。
进一步地,
若排程任务没有下次触发,保留或删除该排程任务。
进一步地,根据所保存的相关参数获得其重排程触发时间,具体包括:
判断Trigger种类;
若Trigger为CronTrigger,则将记录在数据库中的cron expression取出来并且重新安排至任务排程,由cron expression确定其重排程触发时间;
若Trigger不属于CronTrigger,则根据Trigger相关参数计算出重排程触发时间。
进一步地,所述根据Trigger相关参数计算出重排程触发时间,具体包括:
取得Trigger的时间区间,并判断上次触发时间是否有值;
若上次触发时间无值,则判断下次触发时间是否处于关闭服务时;
若下次触发时间未处于关闭服务时,则重排程触发时间为下次触发时间不断加上时间区间直至超过预设不安全时间阈值。
进一步地,若上次执行时间无值,且下次触发时间处于关闭服务时,则计算目前时间与下次触发时间之间的错失触发次数,根据错失触发次数计算重排程触发时间;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010045139.3/2.html,转载请声明来源钻瓜专利网。