CN112099975A - 一种消息处理方法及***、存储介质 - Google Patents
一种消息处理方法及***、存储介质 Download PDFInfo
- Publication number
- CN112099975A CN112099975A CN202011026589.4A CN202011026589A CN112099975A CN 112099975 A CN112099975 A CN 112099975A CN 202011026589 A CN202011026589 A CN 202011026589A CN 112099975 A CN112099975 A CN 112099975A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- priority
- queues
- processing
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims description 71
- 230000006870 function Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 4
- 230000026676 system process Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
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
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供了一种消息处理方法及***、存储介质,该消息处理***包括:面向消息的中间件服务和多个消息队列;多个消息队列中的每一个消息队列对应一个队列优先级,每一个消息队列中存储与其队列优先级匹配的消息,中间件服务中存储至少一个消息处理对象,至少一个消息处理对象中的每一个消息处理对象对应多个消息队列中的至少一个消息队列,至少一个消息队列属于同一类别;中间件服务,用于按照队列优先级,依次将多个消息队列中的待处理消息传输至多个消息队列对应的目标消息处理对象中;以利用目标消息处理对象对待处理消息进行消息处理。
Description
技术领域
本申请涉及信号处理领域,尤其涉及一种消息处理方法及***、存储介质。
背景技术
通常,***中的控制过程包括一组人物,任务通过嵌入式处理器(System OnChip,SOC)和实时操作***(Real Time Operating System,RTOS)实时操作***,其中***可以是一个复杂的通信***、工业控制***或者自动中央控制单元。通常情况下,控制过程包括大量独立的功能任务,这些任务处理与***事务操作有关的消息和事件,任务使用其专用堆栈进行维护以进行上下文保存,并有RTOS预定义的优先级进行调度,由于***中不断发展的新功能,会导致***复杂性的增加、进而导致任务的数量成倍增加;而任务数量的增加会增加RTOS的交互,进而增加***的延时以及降低***的性能。
发明内容
本申请实施例提供一种消息处理方法及***、存储介质,能够降低***的延时、提高***的性能。
本申请的技术方案是这样实现的:
第一方面,本申请实施例提供一种消息处理***,所述***包括:面向消息的中间件服务和多个消息队列;所述多个消息队列中的每一个消息队列对应一个队列优先级,所述每一个消息队列中存储与其队列优先级匹配的消息,所述中间件服务中存储至少一个消息处理对象,所述至少一个消息处理对象中的每一个消息处理对象对应所述多个消息队列中的至少一个消息队列,所述至少一个消息队列属于同一类别;
所述中间件服务,用于按照所述队列优先级,依次将所述多个消息队列中的待处理消息传输至所述多个消息队列对应的目标消息处理对象中;以利用所述目标消息处理对象对所述待处理消息进行消息处理。
第二方面,本申请实施例提供一种消息处理方法,应用于消息处理***,所述消息处理***包括面向消息的中间件服务和多个消息队列,所述多个消息队列中的每一个消息队列对应一个队列优先级,所述每一个消息队列中存储与其队列优先级匹配的消息,所述中间件服务存储至少一个消息处理对象;所述方法包括:
通过所述中间件服务按照所述消息队列的队列优先级,依次调度多个消息队列中的待处理消息,并依次查找所述多个消息队列对应的目标消息处理对象;
利用所述目标消息处理对象对所述待处理消息进行消息处理。
第三方面,本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一项所述的方法。
本申请实施例提供了一种消息处理方法及***、存储介质,该消息处理***包括:面向消息的中间件服务和多个消息队列;多个消息队列中的每一个消息队列对应一个队列优先级,每一个消息队列中存储与其队列优先级匹配的消息,中间件服务中存储至少一个消息处理对象,至少一个消息处理对象中的每一个消息处理对象对应多个消息队列中的至少一个消息队列,至少一个消息队列属于同一类别;中间件服务,用于按照队列优先级,依次将多个消息队列中的待处理消息传输至多个消息队列对应的目标消息处理对象中;以利用目标消息处理对象对待处理消息进行消息处理。采用上述***实现方案,本申请提出了一种基于消息的控制过程,设置了不同优先级的消息队列和面向消息的中间件服务,将消息存储在对应的消息队列中,中间件服务按照消息队列的队列优先级,利用其中的消息处理对象对对应的消息队列中的待处理消息进行消息处理,此时,一个消息队列对应一个任务,极大的减少了任务数量,进而降低了与RTOS的交互,在降低***的延时的同时,提高了***的性能。
附图说明
图1为面向任务的控制过程中、用于时隙处理的5G NR无线通信***中的任务分配示意图;
图2为ARC系列处理器的上下文切换时间的示意图;
图3为本申请实施例提供的一种消息处理***的结构示意图;
图4为本申请实施例提供的一种示例性的消息处理***的中间件服务框架示意图;
图5为本申请实施例提供的一种示例性的中间件服务中服务上下文数据库的示意图;
图6为本申请实施例提供的一种示例性的中间件服务、操作***服务和消息处理对象之间的层次结构示意图;
图7为本申请实施例提供的一种示例性的面向任务的控制过程中、用于时隙处理的5G NR无线通信***中的任务分配示意图;
图8为本申请实施例提供的一种消息处理方法的流程图。
具体实施方式
应当理解,此处描述的具体实施例仅仅用以解释本申请。并不用于限定本申请。
如图1所示,为现有的面向任务的控制过程中、用于时隙处理的5G NR无线通信***中的任务分配,T1-T17是连接到功能操作的优先控制过程的任务处理对象,其中T1-T9为高优先级任务,T14-T16为中优先级任务,T10-T13和T17为低优先级任务。现有的面向任务的控制过程包括大量任务,每个任务包括自己的私有堆栈以节省任务上下文,大量的私有堆栈会导致用于RTOS堆栈的SOC内部内存总量很大,此外,由于5G NR子帧中的最小时隙持续时间低,导致预计的任务之间的上下文切换时间的累积也大大增加、控制过程频繁执行,由于任务无法利用RTOS内的上下文切换,导致总***开销的大大增加,进而导致***性能差的问题。
其中,图2显示了Synopsys ARC系列CPU上下文切换时间的MQX RTOS性能。例如,如果5G NR有100个用于插槽控制处理的任务,并假设所有任务需要在125us(插槽持续时间)内至少安排一次,则CPU频率为800MHz,以ARC 600family为例,***开销=(上下文切换时间×CPU执行时间)/时隙持续时间=(115周期x(1/800us))/125us=11.5%。由此可知,时隙持续时间极大的影响了***的开销。
为解决上述问题,提出了本方案的一种消息处理方法及***、存储介质,通过以下实施例进行具体的说明。
实施例一
本申请实施例提供一种消息处理***1,如图3所示,该***1包括:面向消息的中间件服务10和多个消息队列11;所述多个消息队列11中的每一个消息队列对应一个队列优先级,所述每一个消息队列中存储与其队列优先级匹配的消息,所述中间件服务10中存储至少一个消息处理对象100,所述至少一个消息处理对象中的每一个消息处理对象对应所述多个消息队列中的至少一个消息队列,所述至少一个消息队列属于同一类别;
所述中间件服务10,用于按照所述队列优先级,依次将所述多个消息队列中11的待处理消息传输至所述多个消息队列对应的目标消息处理对象中;以利用所述目标消息处理对象对所述待处理消息进行消息处理。
本申请实施例提供的一种消息处理***应用于与操作***事务的操作相关的、基于消息的控制过程。
本申请实施例中,消息处理***中包括多个消息队列,用于存储控制过程中的消息,多个消息队列中的每一个消息队列对应一个队列优先级,且多个消息队列被划分为至少一类消息队列,消息处理***在接收到来自RTOS的待存储消息之后,基于待存储消息对应的消息类别,从至少一类消息队列中确定待存储消息对应的一类消息队列,之后从一类消息队列中确定与待存储消息的消息优先级匹配的目标消息队列,并将待存储消息存储至目标消息队列中。其中,消息处理***可以按照先进先出的顺序将接收到的待存储消息存储至目标消息队列中。
消息处理***按照上述方法依次将从RTOS接收到的消息存储至对应的消息队列中,由此,多个消息队列中存储了与其队列优先级匹配的消息。
本申请实施例中,消息处理***可以按照预设分类策略,将多个消息队列划分为至少一类消息队列,如按照数据处理,单元搜索,定时调整等功能进行划分。
在实际应用中,消息ID是一种按功能对消息进行分类的参数,消息处理***可以通过解析待存储消息的消息ID来确定待存储消息的消息类别。
本申请实施例中,消息处理***还包括面向消息的中间件服务,中间件服务中存储至少一个消息处理对象,且至少一个消息处理对象中的每一个消息处理对象对应一类消息队列,其中,一类消息队列中可以包括一个消息队列,也可以包括多个消息队列,即一个消息处理对象可以映射到上述一个消息队列,也可以映射到上述多个消息队列。只需满足一个消息处理对象映射的消息队列属于同一类别即可。
可选的,消息队列可以是硬件层面的消息队列服务器,也可以是操作***上软件层面的消息队列程序,具体的根据实际情况进行选择,本申请实施例不做具体的限定。
可选的,中间件服务可以是硬件的中间件服务器,也可以是软件层面的中间件服务程序,具体的根据实际情况进行选择,本申请实施例不做具体的限定。
可选的,消息处理***还在待存储消息的消息优先级更改之后,基于待存储消息的消息优先级,调整待存储消息在至少一个消息队列中的存储消息队列,其中,存储消息队列的队列优先级与待存储消息的消息优先级匹配,由此,消息处理***可以通过将待存储消息推送到不同优先级的一类消息队列中来实现动态更改消息优先级的过程。
本申请实施例中,消息处理***将待存储消息存储至对应的目标消息队列中之后,此时多个消息队列中就分别存储了与其队列优先级匹配的待处理消息,消息处理***对多个消息队列中的待处理消息进行处理了。
本申请实施例中,中间件服务按照队列优先级,依次调度多个消息队列中的待处理消息,并将待处理消息传输到多个消息队列对应的目标消息处理对象中,利用目标消息处理对象对待处理消息进行消息处理。
具体的,中间件服务调度队列优先级最高的第一消息队列中的消息,并按照先进先出的顺序,依次将第一消息队列中的消息传递至第一消息队列对应的第一消息处理对象中,第一消息处理对象对第一消息队列中的消息进行消息处理,直至第一消息队列中的不存在未处理的消息时,中间件服务调度队列优先级次高的第二消息队列中的消息,依次类推,中间件服务按照队列优先级从高到低的顺序,依次调度多个消息队列中的待处理消息,并传输至对应的目标消息处理对象中进行消息处理,直至中间件服务完成将优先级最低的消息队列中的消息传输至对应的消息处理对象中进行消息处理的过程。
可选的,至少一个消息处理对象中的每一个消息处理对象都包括一组处理函数,该一组处理函数用于处理每一个消息处理对象对应的至少一个消息队列中的消息;
所述中间件服务,用于从所述待处理消息中解析消息标识和消息体;根据所述消息标识从所述目标消息处理对象中确定第一处理函数,并将所述消息体传输至所述目标消息处理对象,以利用所述第一处理函数对所述消息体进行处理。
本申请实施例中,中间件服务从消息队列中解析出待处理消息的消息ID,根据消息ID从目标消息处理对象中查找待处理消息对应的第一处理函数,并将消息体传输至第一处理函数中,第一处理函数对消息体进行处理。
可选的,所述消息处理***还包括至少一个处理器;
所述中间件服务,还用于基于所述至少一个处理器的至少一个空闲内核,将所述多个消息队列分配至所述至少一个处理器中,以在至少一个处理器上实现所述目标消息处理对象对所述待处理消息的消息处理过程。
本申请实施例中,消息处理***还包括至少一个处理器,中间件服务基于负载均衡原则,将多个消息队列动态分配给至少一个处理器的可用内核,并在至少一个处理器上实现目标消息处理对象对待处理消息的消息处理过程。
本申请实施例中,上述处理器可以为特定用途集成电路(ASIC,ApplicationSpecific Integrated Circuit)、数字信号处理器(DSP,Digital Signal Processor)、数字信号处理图像处理装置(DSPD,Digital Signal Processing Device)、可编程逻辑图像处理装置(PLD,Programmable Logic Device)、现场可编程门阵列(FPGA,FieldProgrammable Gate Array)、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本实施例不作具体限定。
示例性的,如图4所示,为消息处理***的中间件服务框架。其中,消息队列1至消息队列n按照队列优先级从低到高的顺序。中间件服务将消息队列1和消息队列2映射到消息处理对象1、将消息队列3-消息队列n映射到消息处理对象2,消息处理对象1分配给CPU1,消息处理对象2分配给CPU2,即消息处理对象1在CPU1中依次处理消息队列2和消息队列1中的消息,消息处理对象2在CPU2中依次处理消息队列n-消息队列3中的消息。
可选的,所述中间件服务中存储服务上下文,所述服务上下文中包括所述至少一个消息处理对象、多个消息队列和任务处理对象之间的关联关系,其中,所述任务处理对象用于管理所述中间件服务创建的多优先级任务,所述多个消息队列的队列个数与所述多优先级任务的任务个数一一对应;所述消息队列通过所述服务上下文继承对应的所述多优先级任务的优先级。
本申请实施例中,中间件服务数据库中维护了服务上下文,在服务上下文中包括至少一个消息处理对象、多个消息队列和任务处理对象之间的关联关系,其中,消息队列是RTOS提供的任务间通信的主要方式,消息队列由中间件服务管理,并记录在服务上下文中。中间件服务创建一个多优先级任务,并通过任务处理器记录在服务上下文中,由于服务上下文维护了至少一个消息处理对象、多个消息队列和任务处理对象之间的关联关系,由此,中间件服务通过服务上下文将多优先级任务映射到多个消息队列中,并将多优先级任务的优先级继承到多个消息队列中。
本申请实施例中,在服务上下文中将至少一个消息处理对象和多个消息队列进行关联,定义为一个类别的消息过程均组装到一个消息处理对象中,消息处理对象通过消息ID调用对应的待处理消息。
本申请实施例中,中间件服务数据库作为任务处理对象的输入参数,其中,任务处理对象可以使用相同的软件编程来实现,且过程主体将消息队列和消息处理对象解析为实例来处理消息ID。
如图5所示,为中间件服务中服务上下文数据库的示意图,其中,服务上下文高优先级队列对应高优先级的任务A,服务上下文中优先级队列对应中优先级的任务B,服务上下文低优先级队列对应低优先级的任务C,且每一个服务上下文队列中均维护了对应的消息队列、消息处理对象和任务处理对象的关联关系。
参考图5,如图6所示,为中间件服务、操作***服务和消息处理对象之间的层次结构示意图,其中,消息处理对象分别映射了高优先级任务、中优先级任务和低优先级任务,高优先级任务、中优先级任务和低优先级任务分别关联一个消息队列。
如图7所示,为示例性的引入了本申请中的中间件服务框架的更新的无线通信***插槽处理,其中,M1-M9是组装到高优先级消息队列的消息ID;M14–M16是组合到中优先级消息队列的消息ID;M10-M17是组装到低优先级消息队列的消息ID。中间件服务创建的三个任务优先于消息队列,并将所有与插槽处理相关的消息ID进程封装到一个消息处理对象中。在此,消息处理对象是这三个任务的唯一实例,作为消息处理的条目。由此本申请将图1中的任务数量从17减少到图7中的任务数量3。
可以理解的是,本申请提出了一种基于消息的控制过程,设置了不同优先级的消息队列和面向消息的中间件服务,将消息存储在对应的消息队列中,中间件服务按照消息队列的队列优先级,利用其中的消息处理对象对对应的消息队列中的待处理消息进行消息处理,此时,一个消息队列对应一个任务,极大的减少了任务数量,进而降低了与RTOS的交互,在降低***的延时的同时,提高了***的性能。
实施例二
本申请实施例提供一种消息处理方法,如图8所示,应用于图3所示的消息处理***,消息处理***包括面向消息的中间件服务和多个消息队列,多个消息队列中的每一个消息队列对应一个队列优先级,每一个消息队列中存储与其队列优先级匹配的消息,中间件服务存储至少一个消息处理对象;该方法可以包括:
S101、通过中间件服务按照消息队列的队列优先级,依次调度多个消息队列中的待处理消息,并依次查找多个消息队列对应的目标消息处理对象。
本申请实施例提供的一种消息处理方法应用于与操作***事务的操作相关的、基于消息的控制过程中。
本申请实施例中,中间件服务中存储至少一个消息处理对象,且至少一个消息处理对象中的每一个消息处理对象对应一类消息队列,其中,一类消息队列中可以包括一个消息队列,也可以包括多个消息队列,即一个消息处理对象可以映射到上述一个消息队列,也可以映射到上述多个消息队列。只需满足一个消息处理对象映射的消息队列属于同一类别即可。
本申请实施例中,中间件服务按照队列优先级,依次调度多个消息队列中的待处理消息,并将待处理消息传输到多个消息队列对应的目标消息处理对象中,利用目标消息处理对象对待处理消息进行消息处理。
具体的,中间件服务调度队列优先级最高的第一消息队列中的消息,并按照先进先出的顺序,依次将第一消息队列中的消息传递至第一消息队列对应的第一消息处理对象中,第一消息处理对象对第一消息队列中的消息进行消息处理,直至第一消息队列中的不存在未处理的消息时,中间件服务掉地队列优先级次高的第二消息队列中的消息,依次类推,中间件服务按照队列优先级从高到低的顺序,依次调度多个消息队列中的待处理消息,并传输至对应的目标消息处理对象中进行消息处理,直至中间件服务完成将优先级最低的消息队列中的消息传输至对应的消息处理对象中进行消息处理的过程。
可选的,消息队列可以是硬件层面的消息队列服务器,也可以是操作***上软件层面的消息队列程序,具体的根据实际情况进行选择,本申请实施例不做具体的限定。
可选的,中间件服务可以是硬件的中间件服务器,也可以是软件层面的中间件服务程序,具体的根据实际情况进行选择,本申请实施例不做具体的限定。
进一步地,在通过中间件服务按照消息队列的队列优先级,依次调度多个消息队列中的待处理消息之前,消息处理***还进行以下操作:在触发执行***事件的情况下,获取***事件对应的待存储消息,并确定待存储消息的消息优先级和消息类别;基于消息优先级,将消息优先级消息存储在消息类别对应的存储消息队列,存储消息队列的队列优先级与消息优先级对应;存储消息队列为至少一个消息队列中、存储待存储消息的消息队列。
本申请实施例中,消息处理***中包括多个消息队列,用于存储控制过程中的消息,多个消息队列中的每一个消息队列对应一个队列优先级,且多个消息队列被划分为至少一类消息队列,消息处理***在接收到来自RTOS的待存储消息之后,基于待存储消息对应的消息类别,从至少一类消息队列中确定待存储消息对应的一类消息队列,之后从一类消息队列中确定与待存储消息的消息优先级匹配的目标消息队列,并将待存储消息存储至目标消息队列中。其中,消息处理***可以按照先进先出的顺序将接收到的待存储消息存储至目标消息队列中。
示例性的,如图4所示,为消息处理***的中间件服务框架。其中,消息队列1至消息队列n按照队列优先级从低到高的顺序。中间件服务将消息队列1和消息队列2映射到消息处理对象1、将消息队列3-消息队列n映射到消息处理对象2,消息处理对象1分配给CPU1,消息处理对象2分配给CPU2,即消息处理对象1在CPU1中依次处理消息队列2和消息队列1中的消息,消息处理对象2在CPU2中依次处理消息队列n-消息队列3中的消息。
S102、利用目标消息处理对象对待处理消息进行消息处理。
在消息处理***通过中间件服务按照消息队列的队列优先级,依次调度多个消息队列中的待处理消息,并依次查找多个消息队列对应的目标消息处理对象之后,消息处理***利用目标消息处理对象对待处理消息进行消息处理。
本申请实施例中,消息处理***包括至少一个处理器,获取至少一个处理器的至少一个空闲内核;中间件服务基于至少一个空闲内核将多个消息队列分配至至少一个处理器中;在至少一个处理器上实现目标消息处理对象对待处理消息的消息处理过程。
可选的,中间件服务可以基于负载均衡原则,将多个消息队列动态分配给至少一个处理器的可用内核。
具体的,中间件服务从待处理消息中解析消息标识和消息体;并根据消息标识,从目标消息处理对象中确定第一处理函数;之后将消息体传输至第一处理函数中,并利用第一处理函数对待处理消息进行消息处理。
可以理解的是,本申请提出了一种基于消息的控制过程,设置了不同优先级的消息队列和面向消息的中间件服务,将消息存储在对应的消息队列中,中间件服务按照消息队列的队列优先级,利用其中的消息处理对象对对应的消息队列中的待处理消息进行消息处理,此时,一个消息队列对应一个任务,极大的减少了任务数量,进而降低了与RTOS的交互,在降低***的延时的同时,提高了***的性能。
实施例三
本申请实施例提供一种存储介质,其上存储有计算机程序,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个处理器执行,应用于消息处理***中,该计算机程序实现以下消息处理方法:
通过所述中间件服务按照所述消息队列的队列优先级,依次调度多个消息队列中的待处理消息,并依次查找所述多个消息队列对应的目标消息处理对象;
利用所述目标消息处理对象对所述待处理消息进行消息处理。
在上述方法中,所述消息处理***还包括至少一个处理器;所述利用所述目标消息处理对象对所述待处理消息进行消息处理,包括:
获取所述至少一个处理器的至少一个空闲内核;
通过所述中间件服务,基于所述至少一个空闲内核将所述多个消息队列分配至所述至少一个处理器中;
在所述至少一个处理器上实现所述目标消息处理对象对所述待处理消息的消息处理过程。
在上述方法中,所述利用所述目标消息处理对象对所述待处理消息进行消息处理,包括:
从所述待处理消息中解析消息标识和消息体;
根据所述消息标识,从所述目标消息处理对象中确定第一处理函数;
将所述消息体传输至所述第一处理函数中,并利用所述第一处理函数对所述待处理消息进行消息处理。
在上述方法中,所述通过所述中间件服务按照所述消息队列的队列优先级,依次调度多个消息队列中的待处理消息之前,所述方法还包括:
在触发执行***事件的情况下,获取所述***事件对应的待存储消息,并确定所述待存储消息的消息优先级和消息类别;
基于所述消息优先级,将所述消息优先级消息存储在所述消息类别对应的存储消息队列,所述存储消息队列的队列优先级与所述消息优先级对应;所述存储消息队列为所述至少一个消息队列中、存储所述待存储消息的消息队列。
在上述方法中,所述中间件服务中存储服务上下文,所述服务上下文中包括所述至少一个消息处理对象、消息队列和任务处理对象之间的关联关系,其中,所述任务处理对象用于管理所述中间件服务创建的多优先级任务,所述多个消息队列的队列个数与所述多优先级任务的任务个数一一对应;所述消息队列通过所述服务上下文继承对应的所述多优先级任务的优先级。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台图像显示设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (11)
1.一种消息处理***,其特征在于,所述***包括:面向消息的中间件服务和多个消息队列;所述多个消息队列中的每一个消息队列对应一个队列优先级,所述每一个消息队列中存储与其队列优先级匹配的消息,所述中间件服务中存储至少一个消息处理对象,所述至少一个消息处理对象中的每一个消息处理对象对应所述多个消息队列中的至少一个消息队列,所述至少一个消息队列属于同一类别;
所述中间件服务,用于按照所述队列优先级,依次将所述多个消息队列中的待处理消息传输至所述多个消息队列对应的目标消息处理对象中;以利用所述目标消息处理对象对所述待处理消息进行消息处理。
2.根据权利要求1所述的***,其特征在于,所述消息处理***还包括至少一个处理器;
所述中间件服务,还用于基于所述至少一个处理器的至少一个空闲内核,将所述多个消息队列分配至所述至少一个处理器中,以在至少一个处理器上实现所述目标消息处理对象对所述待处理消息的消息处理过程。
3.根据权利要求1所述的***,其特征在于,所述中间件服务中存储服务上下文,所述服务上下文中包括所述至少一个消息处理对象、所述多个消息队列和任务处理对象之间的关联关系,其中,
所述任务处理对象用于管理所述中间件服务创建的多优先级任务,所述多个消息队列的队列个数与所述多优先级任务的任务个数一一对应;所述消息队列通过所述服务上下文继承对应的所述多优先级任务的优先级。
4.根据权利要求1所述的***,其特征在于,所述至少一个消息处理对象中的每一个消息处理对象包括一组处理函数,所述一组处理函数用于处理所述每一个消息处理对象对应的至少一个消息队列中的消息;
所述中间件服务,用于从所述待处理消息中解析消息标识和消息体;根据所述消息标识从所述目标消息处理对象中确定第一处理函数,并将所述消息体传输至所述第一处理函数中,以利用所述第一处理函数对所述消息体进行处理。
5.根据权利要求1所述的***,其特征在于,所述***还基于待存储消息的消息优先级,调整所述待存储消息在所述至少一个消息队列中的存储消息队列。
6.一种消息处理方法,其特征在于,应用于消息处理***,所述消息处理***包括面向消息的中间件服务和多个消息队列,所述多个消息队列中的每一个消息队列对应一个队列优先级,所述每一个消息队列中存储与其队列优先级匹配的消息,所述中间件服务存储至少一个消息处理对象;所述方法包括:
通过所述中间件服务按照所述消息队列的队列优先级,依次调度多个消息队列中的待处理消息,并依次查找所述多个消息队列对应的目标消息处理对象;
利用所述目标消息处理对象对所述待处理消息进行消息处理。
7.根据权利要求6所述的方法,其特征在于,所述消息处理***还包括至少一个处理器;所述利用所述目标消息处理对象对所述待处理消息进行消息处理,包括:
获取所述至少一个处理器的至少一个空闲内核;
通过所述中间件服务,基于所述至少一个空闲内核将所述多个消息队列分配至所述至少一个处理器中;
在所述至少一个处理器上实现所述目标消息处理对象对所述待处理消息的消息处理过程。
8.根据权利要求6或7所述的方法,其特征在于,所述利用所述目标消息处理对象对所述待处理消息进行消息处理,包括:
通过所述中间件服务从所述待处理消息中解析消息标识和消息体;
通过所述中间件服务根据所述消息标识,从所述目标消息处理对象中确定第一处理函数;
通过所述中间件服务将所述消息体传输至所述第一处理函数中,并利用所述第一处理函数对所述待处理消息进行消息处理。
9.根据权利要求6所述的方法,其特征在于,所述通过所述中间件服务按照所述消息队列的队列优先级,依次调度多个消息队列中的待处理消息之前,所述方法还包括:
在触发执行***事件的情况下,获取所述***事件对应的待存储消息,并确定所述待存储消息的消息优先级和消息类别;
基于所述消息优先级,将所述消息优先级消息存储在所述消息类别对应的存储消息队列,所述存储消息队列的队列优先级与所述消息优先级对应;所述存储消息队列为所述至少一个消息队列中、存储所述待存储消息的消息队列。
10.根据权利要求6所述的方法,其特征在于,所述中间件服务中存储服务上下文,所述服务上下文中包括所述至少一个消息处理对象、消息队列和任务处理对象之间的关联关系,其中,所述任务处理对象用于管理所述中间件服务创建的多优先级任务,所述多个消息队列的队列个数与所述多优先级任务的任务个数一一对应;所述消息队列通过所述服务上下文继承对应的所述多优先级任务的优先级。
11.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求6-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011026589.4A CN112099975B (zh) | 2020-09-25 | 2020-09-25 | 一种消息处理方法及***、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011026589.4A CN112099975B (zh) | 2020-09-25 | 2020-09-25 | 一种消息处理方法及***、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099975A true CN112099975A (zh) | 2020-12-18 |
CN112099975B CN112099975B (zh) | 2024-03-26 |
Family
ID=73755619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011026589.4A Active CN112099975B (zh) | 2020-09-25 | 2020-09-25 | 一种消息处理方法及***、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099975B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112866136A (zh) * | 2021-03-31 | 2021-05-28 | 中国工商银行股份有限公司 | 业务数据处理方法和装置 |
CN113342544A (zh) * | 2021-05-27 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 数据存储架构的设计方法、消息传输方法及装置 |
CN114338560A (zh) * | 2021-12-30 | 2022-04-12 | 中国电信股份有限公司 | 队列数据的处理***、方法、存储介质及电子设备 |
CN115550280A (zh) * | 2022-11-24 | 2022-12-30 | 云账户技术(天津)有限公司 | 多级消息队列实现方法、***、电子设备和可读存储介质 |
CN116048828A (zh) * | 2022-05-26 | 2023-05-02 | 荣耀终端有限公司 | 绘制消息处理方法、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635781A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字***有限公司 | 一种数字电视接收机中间件消息统一处理方法 |
CN104468401A (zh) * | 2014-11-20 | 2015-03-25 | 华为技术有限公司 | 一种报文处理方法和装置 |
CN105610926A (zh) * | 2015-12-22 | 2016-05-25 | 广州唯品会信息科技有限公司 | 消息传递方法、***和消息中间件*** |
US20180324277A1 (en) * | 2017-05-03 | 2018-11-08 | International Business Machines Corporation | System and method for message queue configuration in a network |
CN109672627A (zh) * | 2018-09-26 | 2019-04-23 | 深圳壹账通智能科技有限公司 | 基于集群服务器的业务处理方法、平台、设备及存储介质 |
CN110032459A (zh) * | 2019-04-22 | 2019-07-19 | 深圳乐信软件技术有限公司 | 消息队列配置方法、装置、计算机设备及存储介质 |
CN111190747A (zh) * | 2019-12-20 | 2020-05-22 | 北京金山云网络技术有限公司 | 用于消息队列的消息丢失检测方法和装置 |
CN111404838A (zh) * | 2020-03-17 | 2020-07-10 | 上海云励科技有限公司 | 消息处理方法、装置及设备 |
CN111478968A (zh) * | 2020-04-08 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
-
2020
- 2020-09-25 CN CN202011026589.4A patent/CN112099975B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635781A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字***有限公司 | 一种数字电视接收机中间件消息统一处理方法 |
CN104468401A (zh) * | 2014-11-20 | 2015-03-25 | 华为技术有限公司 | 一种报文处理方法和装置 |
CN105610926A (zh) * | 2015-12-22 | 2016-05-25 | 广州唯品会信息科技有限公司 | 消息传递方法、***和消息中间件*** |
US20180324277A1 (en) * | 2017-05-03 | 2018-11-08 | International Business Machines Corporation | System and method for message queue configuration in a network |
CN109672627A (zh) * | 2018-09-26 | 2019-04-23 | 深圳壹账通智能科技有限公司 | 基于集群服务器的业务处理方法、平台、设备及存储介质 |
CN110032459A (zh) * | 2019-04-22 | 2019-07-19 | 深圳乐信软件技术有限公司 | 消息队列配置方法、装置、计算机设备及存储介质 |
CN111190747A (zh) * | 2019-12-20 | 2020-05-22 | 北京金山云网络技术有限公司 | 用于消息队列的消息丢失检测方法和装置 |
CN111404838A (zh) * | 2020-03-17 | 2020-07-10 | 上海云励科技有限公司 | 消息处理方法、装置及设备 |
CN111478968A (zh) * | 2020-04-08 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112866136A (zh) * | 2021-03-31 | 2021-05-28 | 中国工商银行股份有限公司 | 业务数据处理方法和装置 |
CN113342544A (zh) * | 2021-05-27 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 数据存储架构的设计方法、消息传输方法及装置 |
CN113342544B (zh) * | 2021-05-27 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 数据存储架构的设计方法、消息传输方法及装置 |
CN114338560A (zh) * | 2021-12-30 | 2022-04-12 | 中国电信股份有限公司 | 队列数据的处理***、方法、存储介质及电子设备 |
CN116048828A (zh) * | 2022-05-26 | 2023-05-02 | 荣耀终端有限公司 | 绘制消息处理方法、电子设备及存储介质 |
CN116048828B (zh) * | 2022-05-26 | 2023-10-20 | 荣耀终端有限公司 | 绘制消息处理方法、电子设备及存储介质 |
CN115550280A (zh) * | 2022-11-24 | 2022-12-30 | 云账户技术(天津)有限公司 | 多级消息队列实现方法、***、电子设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112099975B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099975B (zh) | 一种消息处理方法及***、存储介质 | |
JP7060724B2 (ja) | タスクスケジューリング方法、リソース共有使用方法、スケジューラ、コンピュータ可読記憶媒体および装置 | |
US7581223B2 (en) | Method and a system for executing operating system functions, as well as an electronic device | |
US7559062B2 (en) | Intelligent scheduler for multi-level exhaustive scheduling | |
CN107800546B (zh) | 一种广播消息的管理方法及装置 | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
US10271326B2 (en) | Scheduling function calls | |
WO2023246044A1 (zh) | 调度方法及装置、芯片、电子设备及存储介质 | |
CN111221638B (zh) | 并发任务的调度处理方法、装置、设备和介质 | |
CN112506808B (zh) | 测试任务执行方法、计算设备、计算***和存储介质 | |
CN112579271A (zh) | 用于非实时操作***的实时任务调度方法、模块、终端和存储介质 | |
CN116149821A (zh) | 一种集群多任务滑窗调度处理方法、***、设备及介质 | |
CN113157467A (zh) | 一种多进程数据输出方法 | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN116414534A (zh) | 任务调度方法、装置、集成电路、网络设备及存储介质 | |
CN109819674B (zh) | 计算机存储介质、嵌入式调度方法及*** | |
CN113626213A (zh) | 一种事件处理方法、装置、设备及计算机可读存储介质 | |
US11474868B1 (en) | Sharded polling system | |
US9990240B2 (en) | Event handling in a cloud data center | |
Horowitz | A run-time execution model for referential integrity maintenance | |
CN113767368A (zh) | 资源获取方法、相关装置及计算机存储介质 | |
Zuberi et al. | EMERALDS: A small-memory real-time microkernel | |
CN114911538A (zh) | 一种运行***的启动方法及计算设备 | |
CN112395054B (zh) | 一种线程调度方法、装置及*** | |
CN113849285A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |