CN115237563A - 基于消息队列的作业调度方法及系统 - Google Patents
基于消息队列的作业调度方法及系统 Download PDFInfo
- Publication number
- CN115237563A CN115237563A CN202210870501.XA CN202210870501A CN115237563A CN 115237563 A CN115237563 A CN 115237563A CN 202210870501 A CN202210870501 A CN 202210870501A CN 115237563 A CN115237563 A CN 115237563A
- Authority
- CN
- China
- Prior art keywords
- job
- instruction message
- queue
- reading
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于消息队列的作业调度方法及系统,可用于分布式技术领域,该方法包括:读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;通过作业调度主控程序读取作业主控队列中的指令消息;判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。本发明可以实现高效及时地作业调度。
Description
技术领域
本发明涉及分布式技术领域,尤其涉及一种基于消息队列的作业调度方法及系统。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在复杂的计算机应用系统中,批量作业既包含纯批量作业,也包含由批量作业向本系统或外系统发起的联机交易。这些作业之间存在关联关系,通常由作业调度子系统将批量作业串联起来实现系统的功能。例如在数据库中存储批量作业之间的关系,由调度程序每隔一段时间查询并执行满足条件的批量作业,其调度效率较低。如果查询间隔时间设置的比较大,则作业之间的间隔较长,当作业链路很长时,很多时间浪费在查询间隔上了。如果查询间隔时间设置的很小,又会给系统带来性能上的压力。
因此,目前缺乏一种高效及时的作业调度方法。
发明内容
本发明实施例提供一种基于消息队列的作业调度方法,用以实现高效及时地作业调度,该方法包括:
读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;
通过作业调度主控程序读取作业主控队列中的指令消息;
判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;
通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。
本发明实施例提供一种基于消息队列的作业调度系统,用以实现高效及时地作业调度,该系统包括:
指令消息生成模块,用于读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;
作业执行模块,用于通过作业调度主控程序读取作业主控队列中的指令消息;判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;
延时处理模块,用于通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于消息队列的作业调度方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于消息队列的作业调度方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述基于消息队列的作业调度方法。
在本发明实施例中,读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;通过作业调度主控程序读取作业主控队列中的指令消息;判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。与现有技术中每隔一段时间查询并执行满足条件的批量作业的技术方案相比,本发明只在初始时对批量作业进行查询,获得待处理作业,并生成指令消息;后续依靠指令消息来读取作业信息,一方面提高了调度的效率,连续作业之间的调度间隔可以达到毫秒级别;另一方面又没有频繁查询数据库,降低了作业调度对计算资源的消耗。同时由于基于消息机制,可支持批量作业在多节点部署和执行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中基于消息队列的作业调度方法的流程图;
图2为本发明实施例中作业调度的原理图;
图3为本发明实施例中生成对应的指令消息的流程图;
图4为本发明实施例中系统状态查询的流程图;
图5为本发明实施例中延迟处理的流程图;
图6为本发明实施例中基于消息队列的作业调度系统的示意图一;
图7为本发明实施例中基于消息队列的作业调度系统的示意图二;
图8为本发明实施例中基于消息队列的作业调度装置的示意图三;
图9为本发明实施例中计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
首先对本发明涉及的术语进行解释。
作业:计算机应用系统中的批量作业或者由批量作业发起的联机交易。
消息队列:一种“先进先出”的数据结构,指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。
图1为本发明实施例中基于消息队列的作业调度方法的流程图,包括:
步骤101,读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;
步骤102,通过作业调度主控程序读取作业主控队列中的指令消息;
步骤103,判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;
步骤104,通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。
在本发明实施例中,本发明只在初始时对批量作业进行查询,获得待处理作业,并生成指令消息;后续依靠指令消息来读取作业信息,一方面提高了调度的效率,连续作业之间的调度间隔可以达到毫秒级别;另一方面又没有频繁查询数据库,降低了作业调度对计算资源的消耗。
图2为本发明实施例中作业调度的原理图,本发明实施例涉及多张表。
表1为作业配置表的示例,其中,作业ID标识了作业的类型。作业启动类型为前置时,要填写前置作业ID;作业启动类型为定时时,要填写启动时间。关于作业重做时间,需要说明的是,如果超过此时间仍未结束,则将作业调度信息写入作业主控队列,单位为秒。
表1
表2为作业运行状态表的示例。其中,返回码和返回信息可以在作业执行完成填写一些作业执行后的相关消息,例如作业失败原因等。
表2
表3为系统停业表的示例。
表3
在步骤101中,读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中。
图3为本发明实施例中生成对应的指令消息的流程图,在一实施例中,所述待处理作业包括未处理作业和处理超时作业;
读取待处理作业,针对每个待处理作业,生成对应的指令消息,包括:
步骤301,定时读取作业运行状态表中的作业状态,获得作业状态为未处理和处理中的作业;
步骤302,在作业运行状态表中将未处理的作业的开始执行时间添加为当前时间;
步骤303,生成未处理作业对应的指令消息,并将未处理作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中;
步骤304,读取处理中作业在作业配置表中的作业重做时间,读取处理中作业在作业运行状态表中的开始执行时间;
步骤305,根据处理中作业的作业重做时间和开始执行时间、当前时间,判断处理中作业是否为处理超时作业,若是,生成处理超时作业对应的指令消息,并将处理超时作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中。
可见,指令消息中存储了作业配置表以及作业运行状态表中作业的信息,后续通过指令消息进行作业的流转,避免了频繁查询数据库,提高了作业调度的效率。例如,一个作业的作业重做时间为2小时,那么可以根据开始执行时间、当前时间判断该作业是否已经执行了2小时,如果是,该作业为处理超时作业。
指令消息是以字符串的形式存储所有的信息的,具体地,作业主控队列中的指令消息至少包括表4的信息。
表4
在一实施例中,在生成未处理作业对应的指令消息之后,还包括:
获取未处理作业的前置作业,获取作业运行状态表中所述前置作业的作业开始日期和作业流水号,分别将所述前置作业的作业开始日期和作业流水号添加至未处理作业在作业运行状态表中的前置作业开始日期和前置作业流水号。
在一实施例中,通过作业调度主控程序读取作业主控队列中的指令消息,包括:
通过作业调度主控程序,阻塞式读取作业主控队列中的指令消息。
图4为本发明实施例中系统状态查询的流程图,在一实施例中,在通过作业调度主控程序读取作业主控队列中的指令消息之后,还包括:
步骤401,计算距离上次查询系统状态的时长,在所述时长超过设定阈值时,读取当前系统的状态以及指令消息中作业涉及的关联系统的状态;
步骤402,根据所述当前系统的状态以及指令消息中作业涉及的关联系统的状态判断是否允许执行指令消息对应的作业程序;
步骤403,若允许,判断指令消息对应的作业是否满足执行条件;
步骤404,若不允许,等待设定时长后,重复执行以上步骤,直至允许执行指令消息对应的作业程序。
上述设定时长可以根据实际情况而定,例如30秒。
在一实施例中,根据所述当前系统的状态以及指令消息中作业涉及的关联系统的状态判断是否允许执行指令消息对应的作业程序,包括:
分别读取当前系统和关联系统的系统停业表,依次判断每个系统是否处于停业中;
在全部系统均不处于停业中时,确定允许执行指令消息对应的作业程序。
在步骤102中,通过作业调度主控程序读取作业主控队列中的指令消息。
在一实施例中,所述方法还包括:
将所述作业调度主控程序设置为守护进程。
在步骤103中,判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列。
在一实施例中,判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列,包括:
判断存活的子进程数是否达到最大值;
若是,将守护进程休眠设定处理间隔后,重复执行上述步骤;
若否,开一个子进程,在子进程中判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列。
在上述实施例中,将守护进程休眠设定处理间隔,可避免子进程过多,系统处理不过来。
在一实施例中,在执行作业对应的作业程序之后,还包括:
将作业执行后的作业状态和完成执行时间添加至作业运行状态表。
在一实施例中,判断指令消息对应的作业是否满足执行条件,包括:
在指令消息对应的作业的作业启动类型为前置时,读取作业运行状态表,获取前置作业开始日期和前置作业流水号,判断前置作业的作业状态是否为成功结束,若是,确定作业是否满足执行条件;
在指令消息对应的作业的作业启动类型为定时时,判断当前时刻是否已经到达启动时间,若是,确定作业是否满足执行条件。
在上述实施例中,前置作业开始日期和前置作业流水号可以唯一标识一个前置作业。
在步骤104中,通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。
具体地,延迟处理队列中的指令消息也时以字符串的形式存储信息的,至少包括表5中的信息。
表5
图5为本发明实施例中延迟处理的流程图,在一实施例中,通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列,包括:
步骤501,通过作业延时主控程序每隔预设延时时长读取延时处理队列,将延时处理队列中的指令消息添加至本地消息数据中;
步骤502,循环本地消息数组,对每次循环中的指令消息,根据指令消息进入延时处理队列的时间、预设延时时长、当前时间,判断指令消息是否需要回写入延时处理队列;
步骤503,若是,将指令消息回写入延时处理队列;若否,将指令消息写入作业主控队列;
步骤504,在本地消息数据中的指令消息处理完后,释放本地消息数组,休眠延迟处理间隔。
具体地,根据指令消息进入延时处理队列的时间和当前时间,计算指令消息已经延时的时长,若该时长小于预设延时时长,则要回写入延时处理队列,从而保证延时效果。
在一实施例中,所述方法还包括:
将所述作业延时主控程序设置为守护进程。
综上所述,在本发明实施例提出的方法中,读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;通过作业调度主控程序读取作业主控队列中的指令消息;判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。与现有技术中每隔一段时间查询并执行满足条件的批量作业的技术方案相比,本发明只在初始时对批量作业进行查询,获得待处理作业,并生成指令消息;后续依靠指令消息来读取作业信息,一方面提高了调度的效率,连续作业之间的调度间隔可以达到毫秒级别;另一方面又没有频繁查询数据库,降低了作业调度对计算资源的消耗。同时由于基于消息机制,可支持批量作业在多节点部署和执行。
本发明实施例还提出一种基于消息队列的作业调度系统,其原理与基于消息队列的作业调度方法类似,这里不再赘述。
图6为本发明实施例中基于消息队列的作业调度系统的示意图一,包括:
指令消息生成模块601,用于读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;
作业执行模块602,用于通过作业调度主控程序读取作业主控队列中的指令消息;判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;
延时处理模块603,用于通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。
在一实施例中,所述待处理作业包括未处理作业和处理超时作业;
指令消息生成模块具体用于:
定时读取作业运行状态表中的作业状态,获得作业状态为未处理和处理中的作业;
在作业运行状态表中将未处理的作业的开始执行时间添加为当前时间;
生成未处理作业对应的指令消息,并将未处理作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中;
读取处理中作业在作业配置表中的作业重做时间,读取处理中作业在作业运行状态表中的开始执行时间;
根据处理中作业的作业重做时间和开始执行时间、当前时间,判断处理中作业是否为处理超时作业,若是,生成处理超时作业对应的指令消息,并将处理超时作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中。
图7为本发明实施例中基于消息队列的作业调度系统的示意图二,在一实施例中,所述系统还包括作业信息更新模块701,用于:
在生成未处理作业对应的指令消息之后,获取未处理作业的前置作业,获取作业运行状态表中所述前置作业的作业开始日期和作业流水号,分别将所述前置作业的作业开始日期和作业流水号添加至未处理作业在作业运行状态表中的前置作业开始日期和前置作业流水号。
在一实施例中,作业执行模块具体用于:
通过作业调度主控程序,阻塞式读取作业主控队列中的指令消息。
在一实施例中,作业执行模块具体用于:
在通过作业调度主控程序读取作业主控队列中的指令消息之后,计算距离上次查询系统状态的时长,在所述时长超过设定阈值时,读取当前系统的状态以及指令消息中作业涉及的关联系统的状态;
根据所述当前系统的状态以及指令消息中作业涉及的关联系统的状态判断是否允许执行指令消息对应的作业程序;
若允许,判断指令消息对应的作业是否满足执行条件;若不允许,等待设定时长后,重复执行以上步骤,直至允许执行指令消息对应的作业程序。
在一实施例中,作业执行模块具体用于:
分别读取当前系统和关联系统的系统停业表,依次判断每个系统是否处于停业中;
在全部系统均不处于停业中时,确定允许执行指令消息对应的作业程序。
图8为本发明实施例中基于消息队列的作业调度系统的示意图三,在一实施例中,所述系统还包括设置模块801,用于:
将所述作业调度主控程序设置为守护进程。
在一实施例中,作业执行模块具体用于:
判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列,包括:
判断存活的子进程数是否达到最大值;
若是,将守护进程休眠设定处理间隔后,重复执行上述步骤;
若否,开一个子进程,在子进程中判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列。
在一实施例中,作业执行模块具体用于:
在执行作业对应的作业程序之后,将作业执行后的作业状态和完成执行时间添加至作业运行状态表。
在一实施例中,作业执行模块具体用于:
在指令消息对应的作业的作业启动类型为前置时,读取作业运行状态表,获取前置作业开始日期和前置作业流水号,判断前置作业的作业状态是否为成功结束,若是,确定作业是否满足执行条件;
在指令消息对应的作业的作业启动类型为定时时,判断当前时刻是否已经到达启动时间,若是,确定作业是否满足执行条件。
在一实施例中,延时处理模块具体用于:
通过作业延时主控程序每隔预设延时时长读取延时处理队列,将延时处理队列中的指令消息添加至本地消息数据中;
循环本地消息数组,对每次循环中的指令消息,根据指令消息进入延时处理队列的时间、预设延时时长、当前时间,判断指令消息是否需要回写入延时处理队列;
若是,将指令消息回写入延时处理队列;若否,将指令消息写入作业主控队列;
在本地消息数据中的指令消息处理完后,释放本地消息数组,休眠延迟处理间隔。
在一实施例中,设置模块还用于:
将所述作业延时主控程序设置为守护进程。
综上所述,在本发明实施例提出的系统中,读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;通过作业调度主控程序读取作业主控队列中的指令消息;判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。与现有技术中每隔一段时间查询并执行满足条件的批量作业的技术方案相比,本发明只在初始时对批量作业进行查询,获得待处理作业,并生成指令消息;后续依靠指令消息来读取作业信息,一方面提高了调度的效率,连续作业之间的调度间隔可以达到毫秒级别;另一方面又没有频繁查询数据库,降低了作业调度对计算资源的消耗。同时由于基于消息机制,可支持批量作业在多节点部署和执行。
本发明实施例还提供一种计算机设备,图9为本发明实施例中计算机设备的示意图,所述计算机设备900包括存储器910、处理器920及存储在存储器910上并可在处理器920上运行的计算机程序930,所述处理器920执行所述计算机程序930时实现上述基于消息队列的作业调度方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于消息队列的作业调度方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述基于消息队列的作业调度方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (27)
1.一种基于消息队列的作业调度方法,其特征在于,包括:
读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;
通过作业调度主控程序读取作业主控队列中的指令消息;
判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;
通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。
2.如权利要求1所述的方法,其特征在于,所述待处理作业包括未处理作业和处理超时作业;
读取待处理作业,针对每个待处理作业,生成对应的指令消息,包括:
定时读取作业运行状态表中的作业状态,获得作业状态为未处理和处理中的作业;
在作业运行状态表中将未处理的作业的开始执行时间添加为当前时间;
生成未处理作业对应的指令消息,并将未处理作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中;
读取处理中作业在作业配置表中的作业重做时间,读取处理中作业在作业运行状态表中的开始执行时间;
根据处理中作业的作业重做时间和开始执行时间、当前时间,判断处理中作业是否为处理超时作业,若是,生成处理超时作业对应的指令消息,并将处理超时作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中。
3.如权利要求2所述的方法,其特征在于,在生成未处理作业对应的指令消息之后,还包括:
获取未处理作业的前置作业,获取作业运行状态表中所述前置作业的作业开始日期和作业流水号,分别将所述前置作业的作业开始日期和作业流水号添加至未处理作业在作业运行状态表中的前置作业开始日期和前置作业流水号。
4.如权利要求1所述的方法,其特征在于,通过作业调度主控程序读取作业主控队列中的指令消息,包括:
通过作业调度主控程序,阻塞式读取作业主控队列中的指令消息。
5.如权利要求1所述的方法,其特征在于,在通过作业调度主控程序读取作业主控队列中的指令消息之后,还包括:
计算距离上次查询系统状态的时长,在所述时长超过设定阈值时,读取当前系统的状态以及指令消息中作业涉及的关联系统的状态;
根据所述当前系统的状态以及指令消息中作业涉及的关联系统的状态判断是否允许执行指令消息对应的作业程序;
若允许,判断指令消息对应的作业是否满足执行条件;若不允许,等待设定时长后,重复执行以上步骤,直至允许执行指令消息对应的作业程序。
6.如权利要求5所述的方法,其特征在于,根据所述当前系统的状态以及指令消息中作业涉及的关联系统的状态判断是否允许执行指令消息对应的作业程序,包括:
分别读取当前系统和关联系统的系统停业表,依次判断每个系统是否处于停业中;
在全部系统均不处于停业中时,确定允许执行指令消息对应的作业程序。
7.如权利要求1所述的方法,其特征在于,还包括:
将所述作业调度主控程序设置为守护进程。
8.如权利要求7所述的方法,其特征在于,判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列,包括:
判断存活的子进程数是否达到最大值;
若是,将守护进程休眠设定处理间隔后,重复执行上述步骤;
若否,开一个子进程,在子进程中判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列。
9.如权利要求8所述的方法,其特征在于,在执行作业对应的作业程序之后,还包括:
将作业执行后的作业状态和完成执行时间添加至作业运行状态表。
10.如权利要求1所述的方法,其特征在于,判断指令消息对应的作业是否满足执行条件,包括:
在指令消息对应的作业的作业启动类型为前置时,读取作业运行状态表,获取前置作业开始日期和前置作业流水号,判断前置作业的作业状态是否为成功结束,若是,确定作业是否满足执行条件;
在指令消息对应的作业的作业启动类型为定时时,判断当前时刻是否已经到达启动时间,若是,确定作业是否满足执行条件。
11.如权利要求1所述的方法,其特征在于,通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列,包括:
通过作业延时主控程序每隔预设延时时长读取延时处理队列,将延时处理队列中的指令消息添加至本地消息数据中;
循环本地消息数组,对每次循环中的指令消息,根据指令消息进入延时处理队列的时间、预设延时时长、当前时间,判断指令消息是否需要回写入延时处理队列;
若是,将指令消息回写入延时处理队列;若否,将指令消息写入作业主控队列;
在本地消息数据中的指令消息处理完后,释放本地消息数组,休眠延迟处理间隔。
12.如权利要求1所述的方法,其特征在于,还包括:
将所述作业延时主控程序设置为守护进程。
13.一种基于消息队列的作业调度系统,其特征在于,包括:
指令消息生成模块,用于读取待处理作业,针对每个待处理作业,生成对应的指令消息,将所述指令消息添加至作业主控队列中;
作业执行模块,用于通过作业调度主控程序读取作业主控队列中的指令消息;判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列;
延时处理模块,用于通过作业延时主控程序每隔预设延时时长读取延时处理队列,将到达延时时间的指令消息写入作业主控队列。
14.如权利要求13所述的系统,其特征在于,所述待处理作业包括未处理作业和处理超时作业;
指令消息生成模块具体用于:
定时读取作业运行状态表中的作业状态,获得作业状态为未处理和处理中的作业;
在作业运行状态表中将未处理的作业的开始执行时间添加为当前时间;
生成未处理作业对应的指令消息,并将未处理作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中;
读取处理中作业在作业配置表中的作业重做时间,读取处理中作业在作业运行状态表中的开始执行时间;
根据处理中作业的作业重做时间和开始执行时间、当前时间,判断处理中作业是否为处理超时作业,若是,生成处理超时作业对应的指令消息,并将处理超时作业在作业配置表和作业运行状态表中的信息添加至对应的指令消息中。
15.如权利要求13所述的系统,其特征在于,还包括作业信息更新模块,用于:
在生成未处理作业对应的指令消息之后,获取未处理作业的前置作业,获取作业运行状态表中所述前置作业的作业开始日期和作业流水号,分别将所述前置作业的作业开始日期和作业流水号添加至未处理作业在作业运行状态表中的前置作业开始日期和前置作业流水号。
16.如权利要求13所述的系统,其特征在于,作业执行模块具体用于:
通过作业调度主控程序,阻塞式读取作业主控队列中的指令消息。
17.如权利要求13所述的系统,其特征在于,作业执行模块具体用于:
在通过作业调度主控程序读取作业主控队列中的指令消息之后,计算距离上次查询系统状态的时长,在所述时长超过设定阈值时,读取当前系统的状态以及指令消息中作业涉及的关联系统的状态;
根据所述当前系统的状态以及指令消息中作业涉及的关联系统的状态判断是否允许执行指令消息对应的作业程序;
若允许,判断指令消息对应的作业是否满足执行条件;若不允许,等待设定时长后,重复执行以上步骤,直至允许执行指令消息对应的作业程序。
18.如权利要求17所述的系统,其特征在于,作业执行模块具体用于:
分别读取当前系统和关联系统的系统停业表,依次判断每个系统是否处于停业中;
在全部系统均不处于停业中时,确定允许执行指令消息对应的作业程序。
19.如权利要求13所述的系统,其特征在于,还包括设置模块,用于:
将所述作业调度主控程序设置为守护进程。
20.如权利要求19所述的系统,其特征在于,作业执行模块具体用于:
判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列,包括:
判断存活的子进程数是否达到最大值;
若是,将守护进程休眠设定处理间隔后,重复执行上述步骤;
若否,开一个子进程,在子进程中判断指令消息对应的作业是否满足执行条件;若是,执行作业对应的作业程序;若否,将指令消息写入延时处理队列。
21.如权利要求20所述的系统,其特征在于,作业执行模块具体用于:
在执行作业对应的作业程序之后,将作业执行后的作业状态和完成执行时间添加至作业运行状态表。
22.如权利要求13所述的系统,其特征在于,作业执行模块具体用于:
在指令消息对应的作业的作业启动类型为前置时,读取作业运行状态表,获取前置作业开始日期和前置作业流水号,判断前置作业的作业状态是否为成功结束,若是,确定作业是否满足执行条件;
在指令消息对应的作业的作业启动类型为定时时,判断当前时刻是否已经到达启动时间,若是,确定作业是否满足执行条件。
23.如权利要求13所述的系统,其特征在于,延时处理模块具体用于:
通过作业延时主控程序每隔预设延时时长读取延时处理队列,将延时处理队列中的指令消息添加至本地消息数据中;
循环本地消息数组,对每次循环中的指令消息,根据指令消息进入延时处理队列的时间、预设延时时长、当前时间,判断指令消息是否需要回写入延时处理队列;
若是,将指令消息回写入延时处理队列;若否,将指令消息写入作业主控队列;
在本地消息数据中的指令消息处理完后,释放本地消息数组,休眠延迟处理间隔。
24.如权利要求19所述的系统,其特征在于,设置模块还用于:
将所述作业延时主控程序设置为守护进程。
25.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12任一所述方法。
26.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至12任一所述方法。
27.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至12任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210870501.XA CN115237563A (zh) | 2022-07-22 | 2022-07-22 | 基于消息队列的作业调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210870501.XA CN115237563A (zh) | 2022-07-22 | 2022-07-22 | 基于消息队列的作业调度方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237563A true CN115237563A (zh) | 2022-10-25 |
Family
ID=83675156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210870501.XA Pending CN115237563A (zh) | 2022-07-22 | 2022-07-22 | 基于消息队列的作业调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237563A (zh) |
-
2022
- 2022-07-22 CN CN202210870501.XA patent/CN115237563A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8131983B2 (en) | Method, apparatus and article of manufacture for timeout waits on locks | |
CN110806933B (zh) | 一种批量任务处理方法、装置、设备和存储介质 | |
EP2225633B1 (en) | Data parallel production and consumption | |
CN112612799B (zh) | 一种数据同步方法及终端 | |
EP3396542B1 (en) | Database operating method and device | |
TW202109513A (zh) | 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備 | |
CN111208985B (zh) | 基于生产者消费者模型的数据处理方法、系统及存储介质 | |
CN115237563A (zh) | 基于消息队列的作业调度方法及系统 | |
CN116301644B (zh) | 基于多硬盘协调的数据存储方法、系统、终端及介质 | |
CN114756287B (zh) | 一种重排序缓冲区的数据处理方法、装置及存储介质 | |
CN115525797A (zh) | 数据库数据查询方法、装置、设备及存储介质 | |
JPH0798663A (ja) | 非同期i/o制御方式 | |
US20200320456A1 (en) | Energy efficient scheduling of industrial process by reducing idle time and tardiness of jobs | |
CN115858667A (zh) | 用于同步数据的方法、装置、设备和存储介质 | |
CN115756143A (zh) | 数据包处理的节能方法、装置、计算机设备和存储介质 | |
CN113032385B (zh) | 一种易扩展可配置化的数据备份系统及方法 | |
CN111541747A (zh) | 一种数据的检查点设置方法及装置 | |
JPH11353291A (ja) | マルチプロセッサシステム及びタスク交換プログラムを記録した媒体 | |
CN114840545B (zh) | 一种支持状态快速更新的区块链细粒度编辑方法 | |
CN116303304B (zh) | 一种优化数据库日志批量写入的方法及装置 | |
KR102544755B1 (ko) | 분산 저장 방법 및 장치, 전자 기기, 컴퓨터 판독 가능 매체 및 컴퓨터 프로그램 제품 | |
JP2019109600A (ja) | 情報処理装置、計算機制御方法、および計算機制御プログラム | |
US5774732A (en) | Device for managing cyclic pollings for the supervision of computer resources in a network and a process implemented by such a device | |
JP2011070318A (ja) | バッチ処理実行方法及びバッチ処理実行システム | |
CN113742047A (zh) | 基于资源消耗预测的批量任务调度方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |