定时任务调度系统、方法及相应计算机设备和存储介质
文献发布时间:2023-06-19 10:16:30
技术领域
本申请涉及电数字数据处理领域,尤其涉及定时任务调度系统、方法及相应计算机设备和存储介质。
背景技术
目前,存在多个业务系统如医疗系统,各医疗系统重复开发定时调度任务设计,每一医疗系统均单独部署各自的定时模块。定时模块的多点部署导致容易重复调度及代码大量冗余,开发时间长,开发成本高。另外,现有方案为单台调度任务服务,无法达到高可用要求。
发明内容
为了克服现有技术中存在的不足,本发明提供一种定时任务调度系统、方法及相应计算机设备和存储介质,其能实现业务系统定时模块的解耦合,节约开发时间和成本。
在本发明的第一方面,提供一种定时任务调度系统,包括用于部署在服务器上的定时任务调度模块及用于包含在一个或多个业务系统中的消息接收模块;其中
所述定时任务调度模块包括:
任务管理子模块,用于配置消息参数,所述消息参数至少包括业务系统的消息队列名称和业务系统的定时执行类的完整路径;
定时框架,用于根据所述任务管理子模块配置的消息参数控制消息队列的发送;及
消息服务,用于受控于定时框架将消息队列发送给相应业务系统的消息接收模块;
所述消息接收模块包括:
监听子模块,用于监听消息队列;
接收子模块,用于响应于监听到消息队列,接收消息队列;及
任务执行接口,用于根据定义的执行方法执行相应定时任务。
在实施例中,所述执行相应定时任务包括:利用java反射机制对执行类进行实例化;执行类对象调用执行方法实现相应定时任务的本地运行。
在实施例中,所述定时任务调度模块为多台集群部署。
在实施例中,所述定时任务调度模块还包括分布式锁,用于控制获得锁的线程执行任务及没有获得锁的线程放弃任务。
在本发明的第二方面,提供一种定时任务调度方法,该方法包括:
在服务器上,
接收并保存配置的消息参数,所述消息参数至少包括业务系统的消息队列名称和业务系统的定时执行类的完整路径;
根据配置的消息参数控制消息队列的发送;及
受控于定时框架将消息队列发送给相应业务系统;
在与所述服务器通信的业务系统中,
监听消息队列;
响应于监听到消息队列,接收消息队列;及
根据定义的执行方法执行相应定时任务。
在本发明的第三方面,提供一种计算机设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中所述处理器执行所述计算机程序时实现根据本发明的第二方面的方法的步骤。
在本发明的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据本发明的第二方面的方法的步骤。
按照本发明,通过调度模块集中配置定时任务,利用定时框架的定时功能实现消息的定时发送,消息接收模块收到消息后,根据消息发送的执行类进行反射实例化,实现本地业务的定时调用。调度任务集中灵活配置,调度模块无需代码开发、系统升级等,只需配置定时任务即可,避免了重复调度,并实现与业务系统解耦合。消息接收模块利用反射原理,实现一次开发,可以运行在各个业务系统如医疗系统,大大节约开发时间和成本。在调度模块多台集群部署的情形下,还可实现调度的高可用要求。
结合附图阅读本发明实施方式的详细描述后,本发明的其它特点和优点将变得更加清楚。
附图说明
图1为根据本发明系统的一实施例的框图;
图2为根据本发明方法的一实施例的流程图。
为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。
具体实施方式
下面参照附图对本发明的实施方式和实施例进行详细说明。
通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。
图1示出了根据本发明的定时任务调度系统的一优选实施例的框图,该系统包括定时任务调度模块100和消息接收模块200,定时任务调度模块用于部署在服务器上,涉及定时任务的每一业务系统如医疗系统可包含前述消息接收模块以接收消息队列。
定时任务调度模块100包括:
任务管理子模块101,用于配置消息参数,该消息参数至少包括业务系统的消息队列名称和业务系统的定时执行类的完整路径如com.viewhigh.Test,Test需要实现消息接收模块中的任务执行接口;
定时框架102,例如本领域技术人员已知的开源quartz框架,用于根据任务管理子模块配置的消息参数控制消息队列的发送;及
消息服务103,用于受控于定时框架将消息队列发送给相应业务系统的消息接收模块。
微服务环境中,各业务系统可能都需要定时任务功能。本发明通过提供集中的调度模块,实现对各个业务系统的定时任务调度,避免重复调度。
消息接收模块200定义任务执行接口和execute执行方法。消息接收模块200包括:
监听子模块201,用于监听消息队列;
接收子模块202,用于响应于监听到消息队列,接收消息队列;
任务执行接口203,其可利用java反射机制对执行类如上面例示的com.viewhgih.Test进行实例化,例如,Class.forName(执行类完整路径).newInstance()。执行类对象调用执行方法实现相应定时任务的本地运行,处理逻辑是业务执行类处理。
由于消息接收模块利用反射原理,执行类是在配置页面(任务管理子模块)进行配置,不需要改动代码,实现一次开发,可以运行在各个业务系统。
在实施例中,定时任务调度模块可进行多台集群部署,从而实现调度的高可用要求。在该情形下,定时任务调度模块包含分布式锁,以实现消息不重复发送、接收消息幂等性要求,使得获得锁的线程执行任务,没有获得锁的线程放弃任务。分布式锁可采用目前较为流行的redis setnx实现。
图2示出了根据本发明的定时任务调度方法的一优选实施例的流程图,该方法包括:在服务器上,
在步骤S301,接收并保存配置的消息参数,所述消息参数至少包括业务系统的消息队列名称和业务系统的定时执行类的完整路径;
在步骤S302,根据配置的消息参数控制消息队列的发送;及
在步骤S303,受控于定时框架将消息队列发送给相应业务系统;
在与所述服务器通信的业务系统中,
在步骤S304,监听消息队列;
在步骤S305,响应于监听到消息队列,接收消息队列;
在步骤S306,根据定义的执行方法执行相应定时任务。具体地,利用java反射机制对执行类进行实例化,执行类对象调用执行方法实现相应定时任务的本地运行。
在另一实施例中,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现结合图2所示和所述的方法实施例或其它相应方法实施例的步骤,在此不再赘述。
在另一实施例中,本发明提供一种计算机设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中所述处理器执行所述计算机程序时实现结合图2所示和所述的方法实施例或其它相应方法实施例的步骤,在此不再赘述。
在此所述的多个不同实施方式或者其特定特征、结构或特性可在本发明的一个或多个实施方式中适当组合。另外,在某些情形下,只要适当,流程图中和/或流水处理描述的步骤顺序可修改,并不必须精确按照所描述的顺序执行。另外,本发明的多个不同方面可使用软件、硬件、固件或者其组合和/或执行所述功能的其它计算机实施的模块或装置进行实施。本发明的软件实施可包括保存在计算机可读介质中并由一个或多个处理器执行的可执行代码。计算机可读介质可包括计算机硬盘驱动器、ROM、RAM、闪存、便携计算机存储介质如CD-ROM、DVD-ROM、闪盘驱动器和/或具有通用串行总线(USB)接口的其它装置,和/或任何其它适当的有形或非短暂计算机可读介质或可执行代码可保存于其上并由处理器执行的计算机存储器。本发明可结合任何适当的操作系统使用。
除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。
前面说明了本发明的一些优选实施例,但是应当强调的是,本发明不局限于这些实施例,而是可以本发明主题范围内的其它方式实现。本领域技术人员可以在本发明技术构思的启发和不脱离本发明内容的基础上对本发明做出各种变型和修改,这些变型或修改仍落入本发明的保护范围之内。
- 定时任务调度系统、方法及相应计算机设备和存储介质
- 用于将通信设备改变为第一模式的方法、用于提供服务的方法、以及相应的设备、系统、计算机可读程序产品和计算机可读存储介质