CN113742099A - 基于集合的消息消费方法、生产方法、系统及存储介质 - Google Patents

基于集合的消息消费方法、生产方法、系统及存储介质 Download PDF

Info

Publication number
CN113742099A
CN113742099A CN202110982595.5A CN202110982595A CN113742099A CN 113742099 A CN113742099 A CN 113742099A CN 202110982595 A CN202110982595 A CN 202110982595A CN 113742099 A CN113742099 A CN 113742099A
Authority
CN
China
Prior art keywords
message
array
consumed
consumption
messages
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
Application number
CN202110982595.5A
Other languages
English (en)
Inventor
海克洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hubei Meihe Yisi Education Technology Co ltd
Original Assignee
Hubei Meihe Yisi Education Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hubei Meihe Yisi Education Technology Co ltd filed Critical Hubei Meihe Yisi Education Technology Co ltd
Priority to CN202110982595.5A priority Critical patent/CN113742099A/zh
Publication of CN113742099A publication Critical patent/CN113742099A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于集合的消息消费方法、生产方法、系统及存储介质,该消费方法包括:基于消息队列获取消息数组,消息数组中集合有多个基于预设格式生成的消费类型相同的待消费消息;对各待消费消息进行消费,生成各待消费消息的状态标识,并监测各状态标识中是否存在异常状态标识;若存在则将消息数组重新导入消息队列,执行基于消息队列获取消息数组的步骤,直到消息数组中各待消费消息的状态标识均为正常状态标识,完成对消息数组的消费。本发明每次从消息队列中读取的消息数组均包含多项待消费消息,减少因各项待消费消息逐一传输和消费而消耗的资源。同时,待消费消息以预设格式生成,有利于快速解析消费,提升了消息消费的效率。

Description

基于集合的消息消费方法、生产方法、系统及存储介质
技术领域
本发明涉及互联网技术领域,尤其涉及一种基于集合的消息消费方法、生产方法、系统及存储介质。
背景技术
随着互联网技术的快速发展,互联网已经融入到人们生活和工作的各个方面,人们通过互联网购物、聊天、观看视频、开会、分享文件、构建虚拟机等。该类由互联网实现的各项功能,其实为通过互联网的数据传输和处理过程。并且,数据可以以消息的形式传输和处理,即由消息生产者生产消息放入消息队列,由消息消费者从消息队列中取出消息消费。
当前消息的产生和消费通常以单项的形式存在,即产生单条消息放入消息队列中供消费者消费。如此一来,对于同样消费类型的多条消息,逐一传输和消费将消耗较多的资源,且因传统消息格式存在的数据结构繁杂和难以解析的问题,还降低了消息消费的效率。
因此,在消息生产和消费过程中,如何减少资源的消耗和提高消费效率,是当前亟待解决的技术问题。
发明内容
本发明的主要目的在于提供一种基于集合的消息消费方法、生产方法、系统及可读存储介质,旨在解决现有技术在消息生产和消费过程中,如何减少资源的消耗和提高消费效率的技术问题。
为实现上述目的,本发明提供一种基于集合的消息消费方法,应用于消息消费端,所述基于集合的消息消费方法包括:
基于消息队列获取消息数组,其中,所述消息数组中集合有多个基于预设格式生成的消费类型相同的待消费消息;
对所述消息数组中各待消费消息进行消费,生成各所述待消费消息的状态标识,并监测各所述状态标识中是否存在异常状态标识;
若存在异常状态标识,则将所述消息数组重新导入消息队列,以执行基于消息队列获取消息数组的步骤,直到所述消息数组中各所述待消费消息的状态标识均为正常状态标识,完成对所述消息数组的消费。
可选地,所述监测所述状态标识中是否存在异常状态标识的步骤之后包括:
若各所述状态标识中不存在异常状态标识,则将所述消息数组从所述消息队列中剔除,并从所述消息队列获取新的消息数组,执行对所述消息数组中各待消费消息进行消费的步骤;
其中,新的所述消息数组排列在当前剔除的消息数组的后一顺序。
可选地,所述预设格式为json格式,所述待消费消息为虚拟机创建消息或虚拟机销毁消息;
所述待消费消息包括以所述json格式存在的虚拟机ID号、虚拟机CPU编号和虚拟机名称。
可选地,所述对所述消息数组中各待消费消息进行消费的步骤包括:
检验各所述待消费消息的格式是否与所述预设格式匹配;
若与所述预设格式匹配,则创建与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机;
或者,若与所述预设格式匹配,则查找与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机进行销毁。
可选地,所述基于消息队列获取消息数组的步骤之后包括:
将所述消息数组放入线程池,并根据与所述线程池对应的任务队列的类型,判断对所述消息数组是否成功放入线程池启动监测机制;
若启动所述监测机制,且监测到所述消息数组成功放入线程池,则基于所述线程池执行所述对所述消息数组中各待消费消息进行消费的步骤;
若监测到所述消息数组未成功放入线程池,则延迟预设时长后,执行将所述消息数组放入线程池的步骤。
可选地,所述对所述消息数组中各待消费消息进行消费的步骤之前包括:
判断所述消息数组是否携带消费标识,若携带所述消费标识,则从所述消息队列读取新的消息数组,其中,新的所述消息数组排列在携带消费标识的消息数组的后一顺序;
若未携带所述消费标识,则执行对所述消息数组中各待消费消息进行消费的步骤。
可选地,所述将所述消息数组重新导入消息队列的步骤之后包括:
统计所述消息数组的导入次数,并判断所述导入次数是否大于预设次数,若大于预设次数,则判断所述消息队列的消息导入率是否大于预设阈值;
若大于预设阈值,则将所述消息数组标识为待导入状态,并在所述消息导入率小于或等于预设阈值时,执行所述将所述消息数组重新导入消息队列的步骤。
进一步地,为实现上述目的,本发明还提供一种基于集合的消息生产方法,应用于消息生产端,所述基于集合的消息生产方法包括:
获取多个消息数据,并基于预设格式将具有相同消息标识的所述消息数据生成为待消费消息;
将消费类型相同的待消费消息封装为消息数组,并将所述消息数组导入到消息队列中。
进一步地,为实现上述目的,本发明还提供一种基于集合的消息处理系统,所述基于集合的消息处理系统包括消息生产端和消息消费端,所述消息生成端用于生产消息,所述消息消费端用于消费消息;
所述基于集合的消息处理系统还包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的控制程序,所述控制程序被所述处理器执行时实现如上所述的基于集合的消息消费方法的步骤,或者实现如上所述的基于集合的消息生产法的步骤。
进一步地,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有控制程序,所述控制程序被处理器执行时实现如上所述的基于集合的消息消费方法的步骤,或者实现如上所述的基于集合的消息生产法的步骤。
本发明的基于集合的消息消费方法、生产方法、系统及可读存储介质,将通过预设格式生成的消费类型相同的多个待消费消息集合为消息数组,并将消息输出添加到消息队列中;在对消息消费时,则从消息队列中获取出消息数组,并对消息数组中的各项待消费消息进行消费,生成表征每项待消费消息是否消费成功的状态标识;进而监测各个状态标识中是否存在表征消费失败的异常状态标识,若存在异常状态标识,则消息数据中存在消费失败的待消费消息,故而将消息数组重现添加到消息队列中,以便于从消息队列中再次获取到该消息数组,对其中的待消费消息进行消费,直到消息数组中各待消费消息均消费成功。以此,通过将多项待消费消息集合为消息数组添加到消息队列中,使得每次从消息队列中读取的消息数组均包含多项待消费消息,避免各项待消费消息的逐一传输和消费,减少了资源的消耗。同时,待消费消息以预设格式生成,该预设格式相对于传统的消息格式具有体积小、数据结构清晰和解析便利的优点,有利于快速解析消费,从而提升了消息消费的效率。
附图说明
图1为本发明基于集合的消息处理系统实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明基于集合的消息消费方法第一实施例的流程示意图;
图3为本发明基于集合的消息消费方法第三实施例的流程示意图;
图4为本发明基于集合的消息生产方法第一实施例的流程示意图;
图5为本发明基于集合的消息消费方法中,由待消费消息集合成消息数组,以及将消息数组添加到消息队列的示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于集合的消息处理系统。所述基于集合的消息处理系统包括消息生产端和消息消费端,所述消息生成端用于生产消息,所述消息消费端用于消费消息。
请参照图1,图1为本发明基于集合的消息处理系统实施例方案涉及的硬件运行环境的结构示意图。
如图1所示,该基于集合的消息处理系统可以包括处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
本领域技术人员可以理解,图1中示出的基于集合的消息处理系统硬件结构并不构成对基于集合的消息处理系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及控制程序。其中,操作系统是管理和控制基于集合的消息处理系统与软件资源的程序,支持网络通信模块、用户接口模块、控制程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1004;用户接口模块用于管理和控制用户接口1003。
在图1所示的基于集合的消息处理系统硬件结构中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;处理器1001可以调用存储器1005中存储的控制程序,并执行以下操作:
基于消息队列获取消息数组,其中,所述消息数组中集合有多个基于预设格式生成的消费类型相同的待消费消息;
对所述消息数组中各待消费消息进行消费,生成各所述待消费消息的状态标识,并监测各所述状态标识中是否存在异常状态标识;
若存在异常状态标识,则将所述消息数组重新导入消息队列,以执行基于消息队列获取消息数组的步骤,直到所述消息数组中各所述待消费消息的状态标识均为正常状态标识,完成对所述消息数组的消费。
进一步地,所述监测所述状态标识中是否存在异常状态标识的步骤之后;处理器1001可以调用存储器1005中存储的控制程序,并执行以下操作:
若各所述状态标识中不存在异常状态标识,则将所述消息数组从所述消息队列中剔除,并从所述消息队列获取新的消息数组,执行对所述消息数组中各待消费消息进行消费的步骤;
其中,新的所述消息数组排列在当前剔除的消息数组的后一顺序。
进一步地,所述预设格式为json格式,所述待消费消息为虚拟机创建消息或虚拟机销毁消息;
所述待消费消息包括以所述json格式存在的虚拟机ID号、虚拟机CPU编号和虚拟机名称。
进一步地,所述对所述消息数组中各待消费消息进行消费的步骤包括:
检验各所述待消费消息的格式是否与所述预设格式匹配;
若与所述预设格式匹配,则创建与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机;
或者,若与所述预设格式匹配,则查找与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机进行销毁。
进一步地,所述基于消息队列获取消息数组的步骤之后;处理器1001可以调用存储器1005中存储的控制程序,并执行以下操作:
将所述消息数组放入线程池,并根据与所述线程池对应的任务队列的类型,判断对所述消息数组是否成功放入线程池启动监测机制;
若启动所述监测机制,且监测到所述消息数组成功放入线程池,则基于所述线程池执行所述对所述消息数组中各待消费消息进行消费的步骤;
若监测到所述消息数组未成功放入线程池,则延迟预设时长后,执行将所述消息数组放入线程池的步骤。
进一步地,所述对所述消息数组中各待消费消息进行消费的步骤之前;处理器1001可以调用存储器1005中存储的控制程序,并执行以下操作:
判断所述消息数组是否携带消费标识,若携带所述消费标识,则从所述消息队列读取新的消息数组,其中,新的所述消息数组排列在携带消费标识的消息数组的后一顺序;
若未携带所述消费标识,则执行对所述消息数组中各待消费消息进行消费的步骤。
进一步地,所述将所述消息数组重新导入消息队列的步骤之后;处理器1001可以调用存储器1005中存储的控制程序,并执行以下操作:
统计所述消息数组的导入次数,并判断所述导入次数是否大于预设次数,若大于预设次数,则判断所述消息队列的消息导入率是否大于预设阈值;
若大于预设阈值,则将所述消息数组标识为待导入状态,并在所述消息导入率小于或等于预设阈值时,执行所述将所述消息数组重新导入消息队列的步骤。
进一步地,处理器1001可以调用存储器1005中存储的控制程序,并执行以下操作:
获取多个消息数据,并基于预设格式将具有相同消息标识的所述消息数据生成为待消费消息;
将消费类型相同的待消费消息封装为消息数组,并将所述消息数组导入到消息队列中。
本发明基于集合的消息处理系统的实施方式与下述基于集合的消息消费方法各实施例基本相同,在此不再赘述。
本发明提供一种基于集合的消息消费方法,应用于消息消费端,参照图2,图2为本发明基于集合的消息消费方法第一实施例的流程示意图。
本发明实施例提供了基于集合的消息消费方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。具体地,本实施例基于集合的消息消费方法包括:
步骤S10,基于消息队列获取消息数组,其中,所述消息数组中集合有多个基于预设格式生成的消费类型相同的待消费消息;
本实施例基于集合的消息消费方法应用于消息消费端,用于实现对集合中多个消息的批量消费。具体地,将需要消费的各条消息作为待消费消息,并将各条待消费消息中消费类型相同的待消费消息以预设格式集合封装为消息数组,进而将各个封装的消息数组添加到消息队列中。消息消费端通过从消息队列中获取消息数组进行消费。其中,本实施的预设格式优选为json格式,json格式和传统的xml和其他文本格式比较其体积更小并且数据结构清晰,便于解析,有利于快速解析消费。同时,待消费消息包括但不限于为虚拟机创建消息、虚拟机销毁消息等,以用于构建新的虚拟机,或者将原来的虚拟机注销。
请参照图5所示,在一具体实施例,各条待消费消息中有3条的消费类型为创建虚拟主机类型,则将该3条待消费消息以预设的json格式封装为消息数组M3;另外3条的消费类型为销毁虚拟主机类型,则将该3条待消费消息以预设的json格式封装为消息数组M2;还有3条的消费类型为其他相同类型,则将该3条待消费消息以预设的json格式封装为消息数组M1。此后将M3、M2和M1添加到消息队列MQ中,供消息消费端按照M3、M2和M1的顺序逐一读取并消费。
步骤S20,对所述消息数组中各待消费消息进行消费,生成各所述待消费消息的状态标识,并监测各所述状态标识中是否存在异常状态标识;
进一步地,消息消费端在从消息队列中获取到消息数组之后,则对消息数组中以json格式存在的各个待消费消息进行消费,生成表征各个待消费消息是否消费成功的状态标识。并且,对于虚拟机创建和虚拟机销毁类型的待消费消息,其包括以json格式存在的虚拟机ID号、虚拟机CPU编号和虚拟机名称。通过虚拟机ID号、虚拟机CPU编号和虚拟机名称实现对待消费消息的消费。具体地,所述对所述消息数组中各待消费消息进行消费的步骤包括:
步骤S21,检验各所述待消费消息的格式是否与所述预设格式匹配;
步骤S22,若与所述预设格式匹配,则创建与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机;
或者,步骤S23,若与所述预设格式匹配,则查找与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机进行销毁。
进一步地,为了确保各待消费消息均以预设格式快速消费,在消费之前先检验各待消费消息的格式是否与预设格式匹配,即检验各待消费消息是否以预设的json格式存在,若以预设的json格式存在则判定与预设格式匹配。此后,依据待消费消息包括的虚拟机ID号、虚拟机CPU编号和虚拟机名称创建虚拟机,如以json格式存在的待消费消息为{“id”:“192.168.0.1”,“cpu”:“4-8”,“name”:“master”},则创建的虚拟机的ID号为192.168.0.1,CPU编号为4-8,名称为master。其中,名称master体现所创建的虚拟机类型为主机,若名称为salve,则体现所创建的虚拟机类型为从机。
相应地,对于销毁类型的待消费消息,则从当前已创建的各个虚拟机中查找具有待消费消息中的虚拟机ID号、虚拟机CPU编号和虚拟机名称的虚拟机,进而将查找到的虚拟机进行销毁操作。例如,以json格式存在的待消费消息为{“id”:“192.168.0.2”,“cpu”:“2-4”,“name”:“slaver”},则查找虚拟机ID号为192.168.0.2,CPU编号为2-4,名称为slave的虚拟机,并针对查找到的虚拟机进行销毁操作。
更进一步地,无论是虚拟机的创建还是虚拟机的销毁,消息数组中均包含多条用于创建或用于销毁的待消费消息,在对每条待消费消息完成相应的创建或消费,表征每条待消费消息消费完成后,生成体现每条待消费消息是否消费成功的状态标识。进而通过各个状态标识中是否存在异常状态标识,确定各条待消费消息中是否存在消费失败的待消费消息。
步骤S30,若存在异常状态标识,则将所述消息数组重新导入消息队列,以执行基于消息队列获取消息数组的步骤,直到所述消息数组中各所述待消费消息的状态标识均为正常状态标识,完成对所述消息数组的消费。
进一步地,若经确定各状态标识中存在异常状态标识,则将消息数组重新添加到消息队列中,以便于消息消费端重新从消息队列中获取该消息数组,并对其中的各个待消费消息重新消费。如对于图5所示出的消息数组M2,若消费后其中待消费消息1和2的状态标识为正常状态标识,而待消费消息3的状态标识为异常状态标识,则将消息数组M2重新添加到消息队列MQ中,由消息消费端重新读取并对其中的待消费消息1、2、3进行消费。并且,对于重新放入到消息队列中的消息数组,在消费后同样判断其中各待消费消息的状态标识中是否存在异常状态标识,若不存在异常状态标识,均为正常状态标识,则判定消息数组消费完成。
更进一步地,对于各待消费消息的状态标识均为正常状态标识的情形,所述监测所述状态标识中是否存在异常状态标识的步骤之后包括:
步骤a,若各所述状态标识中不存在异常状态标识,则将所述消息数组从所述消息队列中剔除,并从所述消息队列获取新的消息数组,执行对所述消息数组中各待消费消息进行消费的步骤;
其中,新的所述消息数组排列在当前剔除的消息数组的后一顺序。
进一步地,若经确定各个状态标识中不存在异常状态标识,说明消息数组中的各条待消费消息均消费成功,则将消息数组从消息队列中剔除,避免重复读取和消费。同时,根据消息队列中各消息数组的排列顺序,从消息队列中获取新的消息数组,即获取消息队列中排列在当前剔除的消息数组后一顺序的消息数组,进而针对该新的消息数组中的各待消费消息进行消费。如此循环,实现逐一对消息队列中各个消息数组的批量消费。
本发明的基于集合的消息消费方法,将通过预设格式生成的消费类型相同的多个待消费消息集合为消息数组,并将消息输出添加到消息队列中;在对消息消费时,则从消息队列中获取出消息数组,并对消息数组中的各项待消费消息进行消费,生成表征每项待消费消息是否消费成功的状态标识;进而监测各个状态标识中是否存在表征消费失败的异常状态标识,若存在异常状态标识,则消息数据中存在消费失败的待消费消息,故而将消息数组重现添加到消息队列中,以便于从消息队列中再次获取到该消息数组,对其中的待消费消息进行消费,直到消息数组中各待消费消息均消费成功。以此,通过将多项待消费消息集合为消息数组添加到消息队列中,使得每次从消息队列中读取的消息数组均包含多项待消费消息,避免各项待消费消息的逐一传输和消费,减少了资源的消耗。同时,待消费消息以预设格式生成,该预设格式相对于传统的消息格式具有体积小、数据结构清晰和解析便利的优点,有利于快速解析消费,从而提升了消息消费的效率。
进一步地,基于本发明基于集合的消息消费方法的第一实施例,提出本发明基于集合的消息消费方法第二实施例。
所述基于集合的消息消费方法第二实施例与所述基于集合的消息消费方法第一实施例的区别在于,所述基于消息队列获取消息数组的步骤之后包括:
步骤b1,将所述消息数组放入线程池,并根据与所述线程池对应的任务队列的类型,判断对所述消息数组是否成功放入线程池启动监测机制;
步骤b2,若启动所述监测机制,且监测到所述消息数组成功放入线程池,则基于所述线程池执行所述对所述消息数组中各待消费消息进行消费的步骤;
步骤b3,若监测到所述消息数组未成功放入线程池,则延迟预设时长后,执行将所述消息数组放入线程池的步骤。
本实施例的消息数组依赖于线程池实现消费。具体地,消息消费端将获取的消息数组放入到线程池,并考虑到线程池中任务队列的类型不同,可能存在放入失败的情形,而设置有监测机制。其中,任务队列包括有界队列和无界队列,对于有界队列可能存在拒绝放入而导致放入失败,故设置有监测机制;对于无界队列则因不存在拒绝放入,不会导致放入失败,而未设置监测机制。
进一步地,在将消息数组放入线程池之后,获取线程池对应任务队列的类型标识,根据该类型标识确定任务队列的类型,进而依据任务队列的类型,判断是否需要启动监测机制,用以监测消息数组是否成功放入线程池。其中,在类型标识表征任务队列的类型为无界队列时,不需要启动监测机制;在类型标识表征任务队列的类型为有界队列时需要启动监测机制。
更进一步地,若经确定需要启动监测机制,则基于启动的监测机制检测消息数组是否成功放入到线程池。若成功放入到线程池,则通过线程池中的线程对消息数组中各待消费消息进行消费。反之,若监测到消息数组未成功放入线程池,则启动延迟机制,在延迟预先依据需求设定的预设时长后,将消息数组再次放入到线程池。
需要说明的是,对于再次放入到线程池的消息数组,其携带有表征需要启动监测机制的监测标识,故不需要再依据类型标识确定是否需要启动监测机制,而是可直接依据监测标识启动监测机制,以提高消息消费的效率。此外,对于不需要启动监测机制的无界队列,则在将消息数组放入到线程池后,直接由线程池中的线程对消息数组中的各个待消费消息进行消费,以进一步提高消息消费效率。
可理解地,在多个消息消费端的情况下,某一消息消费端即将开始对消息数组中的各待消费消息进行消费时,可能该消息数组已由其他消息消费端消费。因此,为了避免重复消费,被实施还设置有消息数组的状态检测机制。具体地,所述对所述消息数组中各待消费消息进行消费的步骤之前包括:
步骤b4,判断所述消息数组是否携带消费标识,若携带所述消费标识,则从所述消息队列读取新的消息数组,其中,新的所述消息数组排列在携带消费标识的消息数组的后一顺序;
步骤b5,若未携带所述消费标识,则执行对所述消息数组中各待消费消息进行消费的步骤。
进一步地,对于当前处于消费过程中的消息数组,或者已经被消费的消息数组,均携带有消费标识。故消息消费端在对消息数组中的待消费消息进行消费前,先判断消息数组是否携带消费标识,若携带消费标识,则说明当前获取的消息数组正处于消费状态,或者已经被消费完成,故从消息队列中读取新的消息数组,该新的消息数组即为消息队列中排列在经判定携带消费标识的消息数组的后一顺序的消息数组。将获取新的消息数组放入线程池,并判断其是否携带消费标识,如此循环,依次实现对消息队列中各个消息数组的消费。
更进一步地,若经判断消息数组未携带消费标识,说明该消息数组尚未消费,故开始对消息数组中的各项待消费消息进行消费。同时,针对消息数组分配消费标识,以避免其他消息消费端对该消息数组重复消费。
本实施例将获取的消息数组放入到线程池中,并依据线程池所对应任务队列的类型,启动监测机制,以监测消息数组是否成功放入线程池,确保了消息数组可成功放入到具有不同类型任务队列的消息数组。同时,在对消息数组中的待消费消息消费前,先通过判断消息数组是否携带消费标识,来确定消息数组当前处于消费状态或已被消费,以此避免消息数组的重复消费,确保了消费的准确性。
进一步地,请参照图3,基于本发明基于集合的消息消费方法的第一或第二实施例,提出本发明基于集合的消息消费方法第三实施例。
所述基于集合的消息消费方法第三实施例与所述基于集合的消息消费方法第一或第二实施例的区别在于,所述将所述消息数组重新导入消息队列的步骤之后包括:
步骤S40,统计所述消息数组的导入次数,并判断所述导入次数是否大于预设次数,若大于预设次数,则判断所述消息队列的消息导入率是否大于预设阈值;
步骤S50,若大于预设阈值,则将所述消息数组标识为待导入状态,并在所述消息导入率小于或等于预设阈值时,执行所述将所述消息数组重新导入消息队列的步骤。
本实施例对消息数组因消费失败导入到消息数组重新处理的次数进行限定,以避免频繁对消费失败的消息数组进行处理,影响其他正常消息数组的处理。具体地,在将消息数组重新导入到消息队列之后,则对该消息数组重新导入的导入次数进行统计。其中,每次重新导入均会生成对应的导入记录,故可通过导入记录统计导入次数。
进一步地,预先依据需求设置有预设次数,将统计的导入次数与该预设次数对比,判断导入次数是否大于预设次数。若大于预设次数,则说明消息数组消费失败的次数过多,可能影响数组队列中其他消息数组的消费。此时,获取消息队列的消息导入率,该消息导入率体现了单位时间内导入到消息队列的消息数组数量。并且,为了体现导入数量的高低,预先设置有预设阈值。将获取的消息导入率与预设阈值对比,判断消息导入率是否大于预设阈值。若大于预设阈值,则说明当前导入到消息队列的消息数组数量较多,可能存在难以及时处理的问题。反之,若消息导入率不大于预设阈值,说明当前导入到消息队列的消息数组数量较少,此时可直接将消息数组导入到消息队列,供消息消费端获取并消费。
更进一步地,对于消息导入率大于预设阈值,先将消息数组标识为待导入状态,以体现等待导入的状态,并实时监控消息导入率。当监控到消息导入率小于或等于预设阈值,体现导入到消息队列的消息数组数量不多时,才将消息数组重新导入到消息队列,供消息消费端获取并消费。
本实施例针对消费失败的消息数组统计重新导入到消息队列的导入次数,并在消息队列导入率较高时,将导入次数过多的消息数组标识为待导入状态,直到消息导入率降低到预设阈值时,才将该类标识的消息数组导入到消息队列进行消费,以避免影响消息队列中其他消息数组的正常处理,有利于保证消息队列中各个消息数组的处理效率。
进一步地,本发明还提出一种应用于消息生产端的基于集合的消息生产方法,请参照图4,图4为本发明基于集合的消息生产方法第一实施例的流程示意图。所述基于集合的消息生产方法包括:
步骤S60,获取多个消息数据,并基于预设格式将具有相同消息标识的所述消息数据生成为待消费消息;
步骤S70,将消费类型相同的待消费消息封装为消息数组,并将所述消息数组导入到消息队列中。
本实施例基于集合的消息生产方法应用与消息生产端,用于以集合的形似实现多个消息的生产。具体地,先获取多个需要消费处理的消息数据,进而查找其中具有相同消息标识的消息数据,并将查找出的消息数据以预设格式生成为待消费消息。其中,预设格式优选为json格式,且相同消息标识体现了归属于同一消息的内容。例如上述创建虚拟机的消息,其包括虚拟机ID号、虚拟机CPU编号和虚拟机名称三项消息数据,该三项消息数据添加有相同的消息标识,以体现创建虚拟机具有的信息。因此,需要从多个消息数据中查找出该三项具有相同消息标识的消息数据,并将三者以json格式生成为待消费消息,如形成上述待消费消息{“id”:“192.168.0.1”,“cpu”:“4-8”,“name”:“master”}。
进一步地,在形成多个待消息消息后,进而将消费类型相同的待消费消息封装为消息数组,例如形成6项待消费消息,分别是q1、q2、q3、q4、q5和q6,其中,q1、q2和q3的消费类型为创建虚拟机,q4、q5和q6的类型为销毁虚拟机;故将消费类型相同的q1、q2和q3封装到同一个消息数组,将消息类型相同的q4、q5和q6封装另一个消息数组。进而将封装的各个消息数组导入到消息队列中,供消息消费端读取和消费,实现消息生成和消费的全过程。
本实施例通过先将相同消息标识的消息数据以预设格式生成为待消费消息,再将消费类型相同的待消费消息封装为消息数组导入到消息队列中,消息消费端一次可读取和消费消息数组中的多项待消费消息,避免了待消费消息的注意传输和消费,减少了资源的浪费。并且,待消费消息以预设格式生成,该预设格式相对于传统的消息格式具有体积小、数据结构清晰和解析便利的优点,有利于快速解析消费,提升了消息消费的效率。
本发明实施例还提出一种可读存储介质。所述可读存储介质上存储有控制程序,所述控制程序被所述处理器执行时实现如上所述基于集合的消息消费方法的步骤。
本发明可读存储介质可以为确定机可读存储介质,其具体实施方式与上述基于集合的消息消费方法各实施例基本相同,在此不再赘述。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。

Claims (10)

1.一种基于集合的消息消费方法,其特征在于,应用于消息消费端,所述基于集合的消息消费方法包括:
基于消息队列获取消息数组,其中,所述消息数组中集合有多个基于预设格式生成的消费类型相同的待消费消息;
对所述消息数组中各待消费消息进行消费,生成各所述待消费消息的状态标识,并监测各所述状态标识中是否存在异常状态标识;
若存在异常状态标识,则将所述消息数组重新导入消息队列,以执行基于消息队列获取消息数组的步骤,直到所述消息数组中各所述待消费消息的状态标识均为正常状态标识,完成对所述消息数组的消费。
2.如权利要求1所述的基于集合的消息消费方法,其特征在于,所述监测所述状态标识中是否存在异常状态标识的步骤之后包括:
若各所述状态标识中不存在异常状态标识,则将所述消息数组从所述消息队列中剔除,并从所述消息队列获取新的消息数组,执行对所述消息数组中各待消费消息进行消费的步骤;
其中,新的所述消息数组排列在当前剔除的消息数组的后一顺序。
3.如权利要求1所述的基于集合的消息消费方法,其特征在于,所述预设格式为json格式,所述待消费消息为虚拟机创建消息或虚拟机销毁消息;
所述待消费消息包括以所述json格式存在的虚拟机ID号、虚拟机CPU编号和虚拟机名称。
4.如权利要求3所述的基于集合的消息消费方法,其特征在于,所述对所述消息数组中各待消费消息进行消费的步骤包括:
检验各所述待消费消息的格式是否与所述预设格式匹配;
若与所述预设格式匹配,则创建与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机;
或者,若与所述预设格式匹配,则查找与每一所述待消费消息的虚拟机ID号、虚拟机CPU编号和虚拟机名称对应的虚拟机进行销毁。
5.如权利要求1-4任一项所述的基于集合的消息消费方法,其特征在于,所述基于消息队列获取消息数组的步骤之后包括:
将所述消息数组放入线程池,并根据与所述线程池对应的任务队列的类型,判断对所述消息数组是否成功放入线程池启动监测机制;
若启动所述监测机制,且监测到所述消息数组成功放入线程池,则基于所述线程池执行所述对所述消息数组中各待消费消息进行消费的步骤;
若监测到所述消息数组未成功放入线程池,则延迟预设时长后,执行将所述消息数组放入线程池的步骤。
6.如权利要求1-4任一项所述的基于集合的消息消费方法,其特征在于,所述对所述消息数组中各待消费消息进行消费的步骤之前包括:
判断所述消息数组是否携带消费标识,若携带所述消费标识,则从所述消息队列读取新的消息数组,其中,新的所述消息数组排列在携带消费标识的消息数组的后一顺序;
若未携带所述消费标识,则执行对所述消息数组中各待消费消息进行消费的步骤。
7.如权利要求1-4任一项所述的基于集合的消息消费方法,其特征在于,所述将所述消息数组重新导入消息队列的步骤之后包括:
统计所述消息数组的导入次数,并判断所述导入次数是否大于预设次数,若大于预设次数,则判断所述消息队列的消息导入率是否大于预设阈值;
若大于预设阈值,则将所述消息数组标识为待导入状态,并在所述消息导入率小于或等于预设阈值时,执行所述将所述消息数组重新导入消息队列的步骤。
8.一种基于集合的消息生产方法,其特征在于,应用于消息生产端,所述基于集合的消息生产方法包括:
获取多个消息数据,并基于预设格式将具有相同消息标识的所述消息数据生成为待消费消息;
将消费类型相同的待消费消息封装为消息数组,并将所述消息数组导入到消息队列中。
9.一种基于集合的消息处理系统,其特征在于,所述基于集合的消息处理系统包括消息生产端和消息消费端,所述消息生成端用于生产消息,所述消息消费端用于消费消息;
所述基于集合的消息处理系统还包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的控制程序,所述控制程序被所述处理器执行时实现如权利要求1-7中任一项所述的基于集合的消息消费方法的步骤,或者实现如权利要求8所述的基于集合的消息生产法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有控制程序,所述控制程序被处理器执行时实现如权利要求1-8中任一项所述的基于集合的消息消费方法的步骤,或者实现如权利要求8所述的基于集合的消息生产法的步骤。
CN202110982595.5A 2021-08-25 2021-08-25 基于集合的消息消费方法、生产方法、系统及存储介质 Pending CN113742099A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110982595.5A CN113742099A (zh) 2021-08-25 2021-08-25 基于集合的消息消费方法、生产方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110982595.5A CN113742099A (zh) 2021-08-25 2021-08-25 基于集合的消息消费方法、生产方法、系统及存储介质

Publications (1)

Publication Number Publication Date
CN113742099A true CN113742099A (zh) 2021-12-03

Family

ID=78732788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110982595.5A Pending CN113742099A (zh) 2021-08-25 2021-08-25 基于集合的消息消费方法、生产方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN113742099A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117294347A (zh) * 2023-11-24 2023-12-26 成都本原星通科技有限公司 一种卫星信号接收处理方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080222255A1 (en) * 2007-03-08 2008-09-11 Andrew Douglass Hall Systems and methods for providing high performance and scalable messaging
US20110022663A1 (en) * 2009-07-24 2011-01-27 International Business Machines Corporation Partially and Completely Duplicative Messages Handling
US20130081060A1 (en) * 2011-09-22 2013-03-28 Oleksandr Otenko System and Method for Efficient Concurrent Queue Implementation
US20130117381A1 (en) * 2011-11-04 2013-05-09 David Harry Garcia Controlling Notification Based on Power Expense and Social Factors
US20180375783A1 (en) * 2017-06-27 2018-12-27 Atlassian Pty Ltd Retry handling in messaging queues
US20190207892A1 (en) * 2017-12-29 2019-07-04 Facebook, Inc. Techniques for extensible message indexing
CN110505162A (zh) * 2019-08-08 2019-11-26 腾讯科技(深圳)有限公司 消息传输方法、装置及电子设备
CN112416626A (zh) * 2020-12-02 2021-02-26 中国联合网络通信集团有限公司 一种数据处理方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080222255A1 (en) * 2007-03-08 2008-09-11 Andrew Douglass Hall Systems and methods for providing high performance and scalable messaging
US20110022663A1 (en) * 2009-07-24 2011-01-27 International Business Machines Corporation Partially and Completely Duplicative Messages Handling
US20130081060A1 (en) * 2011-09-22 2013-03-28 Oleksandr Otenko System and Method for Efficient Concurrent Queue Implementation
US20130117381A1 (en) * 2011-11-04 2013-05-09 David Harry Garcia Controlling Notification Based on Power Expense and Social Factors
US20180375783A1 (en) * 2017-06-27 2018-12-27 Atlassian Pty Ltd Retry handling in messaging queues
US20190207892A1 (en) * 2017-12-29 2019-07-04 Facebook, Inc. Techniques for extensible message indexing
CN110505162A (zh) * 2019-08-08 2019-11-26 腾讯科技(深圳)有限公司 消息传输方法、装置及电子设备
CN112416626A (zh) * 2020-12-02 2021-02-26 中国联合网络通信集团有限公司 一种数据处理方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117294347A (zh) * 2023-11-24 2023-12-26 成都本原星通科技有限公司 一种卫星信号接收处理方法
CN117294347B (zh) * 2023-11-24 2024-01-30 成都本原星通科技有限公司 一种卫星信号接收处理方法

Similar Documents

Publication Publication Date Title
CN108108297B (zh) 自动化测试的方法和装置
CN106776515B (zh) 数据处理的方法及装置
CN111400186B (zh) 性能测试方法及系统
CN108536601B (zh) 一种评测方法、装置、服务器及存储介质
CN110716848A (zh) 数据收集方法、装置、电子设备及存储介质
CN112115042A (zh) 一种基于采集回放的软件测试方法和系统
CN111563014A (zh) 接口服务性能测试方法、装置、设备和存储介质
CN112269713B (zh) 一种程序运行状态的获取方法、装置、设备及存储介质
CN113986746A (zh) 性能测试方法及其装置、计算机可读存储介质
CN113434396A (zh) 接口测试方法、装置、设备、存储介质及程序产品
CN107168844B (zh) 一种性能监控的方法及装置
CN113742099A (zh) 基于集合的消息消费方法、生产方法、系统及存储介质
CN112100048A (zh) 一种服务器自适应巡检方法及装置
CN111026794A (zh) 一种基于数据源的数据管理方法、装置、设备及介质
CN114172978A (zh) 多协议设备接入方法及相关装置
CN113360413A (zh) 一种代码测试方法及装置
CN111737097B (zh) 一种流处理系统的性能测试方法及相关装置
CN113626869A (zh) 数据处理方法、系统、电子设备以及存储介质
CN111679899A (zh) 任务调度方法、装置、平台设备及存储介质
CN112181816A (zh) 一种基于场景的接口测试方法、装置、计算机设备及介质
CN113779117A (zh) 一种数据监控方法、装置、存储介质和电子设备
CN111562982B (zh) 请求数据的处理方法及装置、计算机可读存储介质、电子设备
CN112765128B (zh) 基于repl的数据开发方法、系统和电子设备
CN111654410B (zh) 网关请求监控方法、装置、设备及介质
CN115629788A (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