CN113296976A - 消息处理方法、装置、电子设备、存储介质及程序产品 - Google Patents
消息处理方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN113296976A CN113296976A CN202110185186.2A CN202110185186A CN113296976A CN 113296976 A CN113296976 A CN 113296976A CN 202110185186 A CN202110185186 A CN 202110185186A CN 113296976 A CN113296976 A CN 113296976A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- target
- consumption
- storage space
- 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
- 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)
- Information Transfer Between Computers (AREA)
Abstract
本公开实施例公开了一种消息处理方法、装置、电子设备、存储介质及程序产品,所述方法包括:响应于确定消息队列满足消息接收条件,根据消息队列与持久化队列存储空间之间的映射关系,将消息队列存储入持久化队列存储空间中;接收到消息消费指令且确定无法从内存中读取目标消费消息时,根据消息消费指令从持久化队列存储空间中读取目标消费消息;将目标消费消息发送给消息消费方。该技术方案提高了消息堆积能力,实现了消费回溯、离线消息读取、消费标记删除确认、延时消息处理、消息ACK机制、流计算系统接入以及存储与计算分离,在不影响消息实时性的同时提高了系统吞吐量,满足了用户对消息本身的处理需求以及对系统存储扩展性日益增长的需求。
Description
技术领域
本公开实施例涉及消息处理技术领域,具体涉及一种消息处理方法、装置、电子设备、存储介质及程序产品。
背景技术
AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一种提供统一消息服务的、为面向消息的中间件设计的、应用层标准高级消息队列协议,基于AMQP协议能够实现消息的点对点订阅,比如RabbitMQ方案就是借助AMQP协议实现的消息的发送、路由以及接收。但RabbitMQ方案存在以下技术上的障碍:节点消息堆积较多时,堆积消息会快速沉入很深的队列中去,这样就会增加处理每个消息的平均开销,从而降低整个系统的数据处理能力,同时又因为要花更多的时间和资源处理堆积消息,后流入的消息同样会被堆积和挤压,导致系统负载恶性循环,引起严重的内存堆积;由于仅支持消息队列处理机制,因此无法实现消费回溯和消费标记删除的确认,以及延时消息的处理,从而无法满足日益增长的用户对消息本身的处理需求;由于其本身的堆积能力以及架构难以支持实时性要求高且吞吐量大的流计算系统的接入,因此,无法实现流计算;虽然支持消息持久化,但消息的持久化更多地是依赖本地磁盘的能力,不能满足用户对于系统存储扩展性日益增长的需求。
发明内容
本公开实施例提供一种消息处理方法、装置、电子设备、存储介质及程序产品。
第一方面,本公开实施例中提供了一种消息处理方法。
具体的,所述消息处理方法,包括:
响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中;
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取所述目标消费消息;
将所述目标消费消息发送给消息消费方。
结合第一方面,本公开实施例在第一方面的第一种实现方式中,所述响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中,包括:
响应于确定消息队列满足消息接收条件,确定所述消息队列与持久化队列存储空间之间的映射关系;
根据所述映射关系确定与所述消息队列对应的持久化队列存储空间;
将所述消息队列存储入与所述消息队列对应的持久化队列存储空间中。
结合第一方面和第一方面的第一种实现方式,本公开实施例在第一方面的第二种实现方式中,所述消息接收条件为以下条件中的一种或多种:
消息队列所接收消息的数量达到预设数量阈值;
消息队列所接收消息的长度达到预设长度阈值;
消息队列接收消息的时间达到预设时间阈值。
结合第一方面、第一方面的第一种实现方式和第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述将所述消息队列存储入所述持久化队列存储空间中,被实施为:
将所述消息队列以同步或异步的方式存储入所述持久化队列存储空间中。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式和第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述消息消费指令携带有目标消费消息队列标识信息;
所述接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取目标消费消息,包括:
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,读取所述消息消费指令中携带的目标消费消息队列标识信息;
获取消息队列与持久化队列存储空间之间的映射关系;
根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列对应的目标持久化队列存储空间;
从所述目标持久化队列存储空间中读取所述目标消费消息队列,得到所述目标消费消息。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式和第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,所述消息消费指令还携带有目标消费消息标识信息;
所述接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取目标消费消息,还包括:
根据所述目标消费消息标识信息从所述目标消费消息队列中过滤得到所述目标消费消息。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式和第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,还包括:
接收到消息消费指令,且确定能够从内存中读取目标消费消息时,根据所述消息消费指令从所述内存中读取所述目标消费消息。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式和第一方面的第六种实现方式,本公开在第一方面的第七种实现方式中,还包括:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式、第一方面的第六种实现方式和第一方面的第七种实现方式,本公开在第一方面的第八种实现方式中,所述路由参数至少包括目标路由标识信息;
所述响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中,包括:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数确定与所述路由参数对应的目标路由设备;
获取所述目标路由设备与目标消息队列之间的预设对应关系;
根据所述预设对应关系确定与所述路由参数对应的目标消息队列;
将所述消息路由至所述目标消息队列中。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式、第一方面的第六种实现方式、第一方面的第七种实现方式和第一方面的第八种实现方式,本公开在第一方面的第九种实现方式中,还包括:
对于所述映射关系和/或预设对应关系进行维护和管理。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式、第一方面的第六种实现方式、第一方面的第七种实现方式、第一方面的第八种实现方式和第一方面的第九种实现方式,本公开在第一方面的第十种实现方式中,所述持久化队列存储空间为远程持久化队列存储空间。
第二方面,本公开实施例中提供了一种消息处理装置。
具体的,所述消息处理装置,包括:
存储模块,被配置为响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中;
读取模块,被配置为接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取目标消费消息;
发送模块,被配置为将所述目标消费消息发送给消息消费方。
结合第二方面,本公开实施例在第二方面的第一种实现方式中,所述存储模块被配置为:
响应于确定消息队列满足消息接收条件,确定所述消息队列与持久化队列存储空间之间的映射关系;
根据所述映射关系确定与所述消息队列对应的持久化队列存储空间;
将所述消息队列存储入与所述消息队列对应的持久化队列存储空间中。
结合第二方面和第二方面的第一种实现方式,本公开实施例在第二方面的第二种实现方式中,所述消息接收条件为以下条件中的一种或多种:
消息队列所接收消息的数量达到预设数量阈值;
消息队列所接收消息的长度达到预设长度阈值;
消息队列接收消息的时间达到预设时间阈值。
结合第二方面、第二方面的第一种实现方式和第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述将所述消息队列存储入所述持久化队列存储空间中的部分,被配置为:
将所述消息队列以同步或异步的方式存储入所述持久化队列存储空间中。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式和第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述消息消费指令携带有目标消费消息队列标识信息;
所述读取模块被配置为:
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,读取所述消息消费指令中携带的目标消费消息队列标识信息;
获取消息队列与持久化队列存储空间之间的映射关系;
根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列对应的目标持久化队列存储空间;
从所述目标持久化队列存储空间中读取所述目标消费消息队列,得到所述目标消费消息。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式和第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,所述消息消费指令还携带有目标消费消息标识信息;
所述读取模块还被配置为:
根据所述目标消费消息标识信息从所述目标消费消息队列中过滤得到所述目标消费消息。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式和第二方面的第五种实现方式,本公开在第二方面的第六种实现方式中,所述读取模块还被配置为:
接收到消息消费指令,且确定能够从内存中读取目标消费消息时,根据所述消息消费指令从所述内存中读取所述目标消费消息。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式和第二方面的第六种实现方式,本公开在第二方面的第七种实现方式中,还包括:
路由模块,被配置为响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式、第二方面的第六种实现方式和第二方面的第七种实现方式,本公开在第二方面的第八种实现方式中,所述路由参数至少包括目标路由标识信息;
所述路由模块被配置为:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数确定与所述路由参数对应的目标路由设备;
获取所述目标路由设备与目标消息队列之间的预设对应关系;
根据所述预设对应关系确定与所述路由参数对应的目标消息队列;
将所述消息路由至所述目标消息队列中。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式、第二方面的第六种实现方式、第二方面的第七种实现方式和第二方面的第八种实现方式,本公开在第二方面的第九种实现方式中,还包括:
维护模块,被配置为对于所述映射关系和/或预设对应关系进行维护和管理。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式、第二方面的第六种实现方式、第二方面的第七种实现方式、第二方面的第八种实现方式和第二方面的第九种实现方式,本公开在第二方面的第十种实现方式中,所述持久化队列存储空间为远程持久化队列存储空间。
第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持消息处理装置执行上述消息处理方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述消息处理装置还可以包括通信接口,用于消息处理装置与其他设备或通信网络通信。
第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储消息处理装置所用的计算机指令,其包含用于执行上述消息处理方法为消息处理装置所涉及的计算机指令。
第五方面,本公开实施例提供了一种计算机程序产品,包括计算机程序/指令,其中,该计算机程序/指令被处理器执行时实现上述消息处理方法的方法步骤。
本公开实施例提供的技术方案可包括以下有益效果:
上述技术方案借助远程持久化队列存储实现了消息的点对点订阅。该技术方案不仅提高了消息堆积能力,提高了消息的整体存储能力,保障了系统数据处理能力,还能够借助持久化的队列存储结构实现消费回溯、离线消息读取、消费标记删除的确认、延时消息的处理、消息的ACK机制以及流计算系统的接入,另外,由于消息存储依赖于底层队列存储结构,因此本技术方案相对于RabbitMQ架构来说有效地实现了存储与计算的分离,从而可以在不影响消息实时性的同时提高系统的整体吞吐量,进而满足了日益增长的用户对消息本身的处理需求以及对系统存储扩展性日益增长的需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开实施例的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本公开一实施方式的消息处理方法的流程图;
图2示出根据本公开一实施方式的消息处理方法的应用场景图;
图3示出根据本公开一实施方式的消息处理装置的结构框图;
图4是适于用来实现根据本公开一实施方式的消息处理方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本公开实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开实施例。
本公开实施例提供的技术方案借助远程持久化队列存储实现了消息的点对点订阅。该技术方案不仅提高了消息堆积能力,提高了消息的整体存储能力,保障了系统数据处理能力,还能够借助持久化的队列存储结构实现消费回溯、离线消息读取、消费标记删除的确认、延时消息的处理、消息的ACK机制以及流计算系统的接入,另外,由于消息存储依赖于底层队列存储结构,因此本技术方案相对于RabbitMQ架构来说有效地实现了存储与计算的分离,从而可以在不影响消息实时性的同时提高系统的整体吞吐量,进而满足了日益增长的用户对消息本身的处理需求以及对系统存储扩展性日益增长的需求。
图1示出根据本公开一实施方式的消息处理方法的流程图,如图1所示,所述消息处理方法包括以下步骤S101-S103:
在步骤S101中,响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中;
在步骤S102中,接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取所述目标消费消息;
在步骤S103中,将所述目标消费消息发送给消息消费方。
上文提及,AMQP是一种提供统一消息服务的、为面向消息的中间件设计的、应用层标准高级消息队列协议,基于AMQP协议能够实现消息的点对点订阅,比如RabbitMQ方案就是借助AMQP协议实现的消息的发送、路由以及接收。但RabbitMQ方案存在以下技术上的障碍:节点消息堆积较多时,堆积消息会快速沉入很深的队列中去,这样就会增加处理每个消息的平均开销,从而降低整个系统的数据处理能力,同时又因为要花更多的时间和资源处理堆积消息,后流入的消息同样会被堆积和挤压,导致系统负载恶性循环,引起严重的内存堆积;由于仅支持消息队列处理机制,因此无法实现消费回溯和消费标记删除的确认,以及延时消息的处理,从而无法满足日益增长的用户对消息本身的处理需求;由于其本身的堆积能力以及架构难以支持实时性要求高且吞吐量大的流计算系统的接入,因此,无法实现流计算;虽然支持消息持久化,但消息的持久化更多地是依赖本地磁盘的能力,不能满足用户对于系统存储扩展性日益增长的需求。
考虑到上述问题,在该实施方式中,提出一种消息处理方法,该方法借助远程持久化队列存储实现了消息的点对点订阅。该技术方案不仅提高了消息堆积能力,提高了消息的整体存储能力,保障了系统数据处理能力,还能够借助持久化的队列存储结构实现消费回溯、离线消息读取、消费标记删除的确认、延时消息的处理、消息的ACK机制以及流计算系统的接入,另外,由于消息存储依赖于底层队列存储结构,因此本技术方案相对于RabbitMQ架构来说有效地实现了存储与计算的分离,从而可以在不影响消息实时性的同时提高系统的整体吞吐量,进而满足了日益增长的用户对消息本身的处理需求以及对系统存储扩展性日益增长的需求。
在本公开一实施方式中,所述消息处理方法可适用于可执行消息处理处理的终端计算机、计算设备、电子设备、服务器、服务集群等。
在本公开一实施方式中,所述消息队列指的是用于放置消息生产方生产的消息的队列。
在本公开一实施方式中,所述消息接收条件可以为以下条件中的一种或多种:
消息队列所接收消息的数量达到预设数量阈值;
消息队列所接收消息的长度达到预设长度阈值;
消息队列接收消息的时间达到预设时间阈值。
考虑到接收消息生产方生产的消息的消息队列需要定时进行持久化存储,以减小消息队列本地存储压力,保障消息队列的数据安全,因此,当消息队列所接收消息的数量达到一定的数量,消息队列所接收消息的长度达到一定的长度,和/或消息队列接收消息的时间达到一定的时间间隔要求,就需要对于消息队列进行一次持久化队列存储。其中,所述预设数量阈值、预设长度阈值和预设时间阈值可根据实际应用的需要以及消息队列数据的特点来确定,本公开对其具体取值不作特别限定。
在本公开一实施方式中,为了减小消息队列本地存储压力,保障消息队列的数据安全,所述持久化队列存储空间设置为远程持久化队列存储空间。其中,所述持久化队列存储空间指的是一种提供对于数据进行顺序写随机读的快速访问以及持久化能力的、磁盘等具有非易失存储性质的、大容量队列存储数据结构。所述持久化队列存储空间可根据实际应用的需要进行设置,比如可以基于数据库系统、文件系统等数据系统来实现;其数据存储结构也可以根据实际应用的需要以及消息队列数据的特点进行设置,比如采用行存储、列存储、K-V存储、对象存储等等,只要所述持久化队列存储空间能够满足相应的数据读写和队列语义能力要求即可;另外,所述持久化队列存储空间的大小也可以根据实际应用的需要以及消息队列数据的数据量进行选择或设置,本公开对于所述持久化队列存储空间的大小不作具体限定。
在本公开一实施方式中,所述消息队列与持久化队列存储空间之间的映射关系可自动生成,这样不仅使得每一消息队列都具有与其对应的持久化队列存储空间,而且还能够快速地对于用于存储所述消息队列的持久化队列存储空间进行确定,从而节省持久化队列存储空间分配时间。
在本公开一实施方式中,所述消息消费指令指的是消息消费方发出的用于消费消息、获取所消费的消息的指令。
在上述实施方式中,当确定用于接收消息生产方生产的消息的消息队列满足所述消息接收条件时,就可根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入相应的所述持久化队列存储空间中。当接收到消息消费方发出的消息消费指令时,先尝试从内存中读取目标消费消息,若确定能够从内存中读取所述目标消费消息,则根据所述消息消费指令直接从所述内存中读取所述目标消费消息,若遇到机器掉电、无法开机、系统崩溃等异常情况导致无法从内存中读取目标消费消息时,即确定此时无法从内存中读取目标消费消息,再根据所述消息消费指令从所述持久化队列存储空间中读取得到所述消息消费方想要的目标消费消息,并将所述目标消费消息发送给消息消费方,从而借助持久化队列存储完成消息的点对点订阅。
在本公开一实施方式中,所述步骤S101,即响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中的步骤,可包括以下步骤:
响应于确定消息队列满足消息接收条件,确定所述消息队列与持久化队列存储空间之间的映射关系;
根据所述映射关系确定与所述消息队列对应的持久化队列存储空间;
将所述消息队列存储入与所述消息队列对应的持久化队列存储空间中。
在该实施方式中,为了将所述消息队列快速存储入持久化队列存储空间中,在确定消息队列满足消息接收条件之后,首先确定所述消息队列与持久化队列存储空间之间的映射关系,然后根据所述映射关系确定与所述消息队列对应的持久化队列存储空间,最后将所述消息队列存储入基于所述映射关系获得的、与所述消息队列对应的持久化队列存储空间中。
在本公开一实施方式中,所述步骤S101中将所述消息队列存储入所述持久化队列存储空间中的步骤,可被实施为:
将所述消息队列以同步或异步的方式存储入所述持久化队列存储空间中。
在该实施方式中,所述消息队列可以以同步的方式存储入所述持久化队列存储空间中,也可以以异步的方式存储入所述持久化队列存储空间中。比如,当系统空闲或者运力足够时,可将所述消息队列以同步的方式存储入所述持久化队列存储空间中,但若系统繁忙或者运力不足时,则可以异步的方式将所述消息队列存储入所述持久化队列存储空间中,以在缓解系统压力的情况下,还能保证消息队列的有效存储。
其中,在将所述消息队列存储入所述持久化队列存储空间中时,亦遵守先入先出的存储规则。
在本公开一实施方式中,所述消息消费指令携带有目标消费消息队列标识信息,其中,所述目标消费消息队列标识信息用于对于所述消息消费方想要消费、获取的消息队列进行可区别性的标识,其可由所述消息消费方确定。
在该实施方式中,所述步骤S102,即所述接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取目标消费消息的步骤,可包括以下步骤:
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,读取所述消息消费指令中携带的目标消费消息队列标识信息;
获取消息队列与持久化队列存储空间之间的映射关系;
根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列对应的目标持久化队列存储空间;
从所述目标持久化队列存储空间中读取所述目标消费消息队列,得到所述目标消费消息。
在该实施方式中,当接收到所述消息消费方发送的消息消费指令后,首先读取所述消息消费指令中携带的目标消费消息队列标识信息;然后获取消息队列与持久化队列存储空间之间的映射关系;根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列标识信息所标识的目标消费消息队列对应的目标持久化队列存储空间,其中,所述目标持久化队列存储空间指的是存储有所述目标消费消息队列的存储空间;最后从所述目标持久化队列存储空间中读取所述目标消费消息队列,所述目标消费消息队列中的消息即为所述消息消费方需要的目标消费消息。
在本公开另一实施方式中,所述消息消费指令还携带有目标消费消息标识信息,其中,所述目标消费消息标识信息用于对于所述消息消费方想要消费、获取的消息进行可区别性的标识,其亦可由所述消息消费方确定。
在该实施方式中,所述步骤S102,即所述接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取目标消费消息的步骤,还可包括以下步骤:
根据所述目标消费消息标识信息从所述目标消费消息队列中过滤得到所述目标消费消息。
在该实施方式中,若所述消息消费方还指定了目标消费消息标识信息,则需将所述目标消费消息标识信息作为过滤条件信息,对于所述目标消费消息队列中的消息进行过滤,过滤得到的、具有与所述目标消费消息标识信息一致的标识信息的消息为最终所述消息消费方需要的消息,即目标消费消息。
上文提及,当接收到消息消费方发出的消息消费指令时,先尝试从内存中读取目标消费消息,若确定能够从内存中读取所述目标消费消息,则根据所述消息消费指令直接从所述内存中读取所述目标消费消息,若遇到机器掉电、无法开机、系统崩溃等异常情况导致无法从内存中读取目标消费消息时,再根据所述消息消费指令从所述持久化队列存储空间中读取得到所述消息消费方想要的目标消费消息,即在本公开一实施方式中,所述方法还包括以下步骤:
接收到消息消费指令,且确定能够从内存中读取目标消费消息时,根据所述消息消费指令从所述内存中读取所述目标消费消息。
在本公开一实施方式中,所述方法还包括以下步骤:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中。
在该实施方式中,为了缩短消息路由所需要的时间,提高消息路由效率,所述消息生产方在发送其生产的消息时还同时会发送路由参数,或者使所述消息携带有所述路由参数,以借助所述路由参数将所述消息准确地路由至与所述路由参数对应的目的消息队列中。
在本公开一实施方式中,所述路由参数至少包括目标路由标识信息,其中,所述目标路由标识信息用于对于处理所述消息的目标路由进行区别性的标识,即,根据所述目标路由标识信息即可确定对于消息执行路由操作的目标路由设备。
在该实施方式中,所述响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中的步骤,可包括以下步骤:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数确定与所述路由参数对应的目标路由设备;
获取所述目标路由设备与目标消息队列之间的预设对应关系;
根据所述预设对应关系确定与所述路由参数对应的目标消息队列;
将所述消息路由至所述目标消息队列中。
在该实施方式中,在接收到消息生产方生产的消息以及路由参数之后,根据所述路由参数确定与所述路由参数对应的目标路由设备,即后续对于所述消息执行路由操作的目标路由设备;然后获取所述目标路由设备与目标消息队列之间的预设对应关系,其中,所述目标路由设备与目标消息队列之间的对应关系可预先设置,这样不仅使得每一路由设备都对应设置有可放置消息的消息队列,而且还能够快速地对于用于放置所述消息的消息队列进行确定,从而节省消息路由时间,提高消息路由效率;根据所述预设对应关系确定用于放置所述消息的目标消息队列之后,即可将所述消息路由至所述目标消息队列中。
在本公开一实施方式中,所述方法还包括以下步骤:
对于所述映射关系和/或预设对应关系进行维护和管理。
在该实施方式中,为了保障所述映射关系和/或预设对应关系的准确性,还需对于所述映射关系和/或预设对应关系进行定期的维护和管理,以适应并体现所述映射关系和/或预设对应关系的变化。比如,可基于所述映射关系和/或预设对应关系生成关系元数据,并对其进行持久化存储,当所述映射关系和/或预设对应关系发生变化时,对于持久化存储的所述映射关系和/或预设对应关系进行更新。
图2示出根据本公开一实施方式的消息处理方法的应用场景图。如图2所示,消息生产方A和消息生产方B发送生产的消息以及携带有目标路由标识信息的路由参数,通过与所述目标路由标识信息对应的路由设备,并基于所述目标路由设备与目标消息队列之间的预设对应关系,消息处理服务器将所述消息生产方A和消息生产方B生产的消息路由至与所述路由参数对应的消息队列中。当消息队列满足消息接收条件后,消息处理服务器根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中。在接收到消息消费方1和消息消费方2发送的携带有目标消费消息队列标识信息的消息消费指令后,消息处理服务器先根据所述目标消费消息队列标识信息尝试从内存中读取目标消费消息,若遇到机器掉电、无法开机、系统崩溃等异常情况导致无法从内存中读取目标消费消息时,再根据所述目标消费消息队列标识信息以及消息队列与持久化队列存储空间之间的映射关系确定存储所述目标消费消息队列的目标持久化队列存储空间,从所述持久化队列存储空间中读取所述目标消费消息队列,即可得到所述消息消费方需要的目标消费消息,最后消息处理服务器将所述目标消费消息转发给所述消息消费方,即可完成消息的点对点订阅。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图3示出根据本公开一实施方式的消息处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图3所示,所述消息处理装置包括:
存储模块301,被配置为响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中;
读取模块302,被配置为接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取所述目标消费消息;
发送模块303,被配置为将所述目标消费消息发送给消息消费方。
上文提及,AMQP是一种提供统一消息服务的、为面向消息的中间件设计的、应用层标准高级消息队列协议,基于AMQP协议能够实现消息的点对点订阅,比如RabbitMQ方案就是借助AMQP协议实现的消息的发送、路由以及接收。但RabbitMQ方案存在以下技术上的障碍:节点消息堆积较多时,堆积消息会快速沉入很深的队列中去,这样就会增加处理每个消息的平均开销,从而降低整个系统的数据处理能力,同时又因为要花更多的时间和资源处理堆积消息,后流入的消息同样会被堆积和挤压,导致系统负载恶性循环,引起严重的内存堆积;由于仅支持消息队列处理机制,因此无法实现消费回溯和消费标记删除的确认,以及延时消息的处理,从而无法满足日益增长的用户对消息本身的处理需求;由于其本身的堆积能力以及架构难以支持实时性要求高且吞吐量大的流计算系统的接入,因此,无法实现流计算;虽然支持消息持久化,但消息的持久化更多地是依赖本地磁盘的能力,不能满足用户对于系统存储扩展性日益增长的需求。
考虑到上述问题,在该实施方式中,提出一种消息处理装置,该装置借助远程持久化队列存储实现了消息的点对点订阅。该技术方案不仅提高了消息堆积能力,提高了消息的整体存储能力,保障了系统数据处理能力,还能够借助持久化的队列存储结构实现消费回溯、离线消息读取、消费标记删除的确认、延时消息的处理、消息的ACK机制以及流计算系统的接入,另外,由于消息存储依赖于底层队列存储结构,因此本技术方案相对于RabbitMQ架构来说有效地实现了存储与计算的分离,从而可以在不影响消息实时性的同时提高系统的整体吞吐量,进而满足了日益增长的用户对消息本身的处理需求以及对系统存储扩展性日益增长的需求。
在本公开一实施方式中,所述消息处理装置可实现为可执行消息处理处理的终端计算机、计算设备、电子设备、服务器、服务集群等。
在本公开一实施方式中,所述消息队列指的是用于放置消息生产方生产的消息的队列。
在本公开一实施方式中,所述消息接收条件可以为以下条件中的一种或多种:
消息队列所接收消息的数量达到预设数量阈值;
消息队列所接收消息的长度达到预设长度阈值;
消息队列接收消息的时间达到预设时间阈值。
考虑到接收消息生产方生产的消息的消息队列需要定时进行持久化存储,以减小消息队列本地存储压力,保障消息队列的数据安全,因此,当消息队列所接收消息的数量达到一定的数量,消息队列所接收消息的长度达到一定的长度,和/或消息队列接收消息的时间达到一定的时间间隔要求,就需要对于消息队列进行一次持久化队列存储。其中,所述预设数量阈值、预设长度阈值和预设时间阈值可根据实际应用的需要以及消息队列数据的特点来确定,本公开对其具体取值不作特别限定。
在本公开一实施方式中,为了减小消息队列本地存储压力,保障消息队列的数据安全,所述持久化队列存储空间设置为远程持久化队列存储空间。其中,所述持久化队列存储空间指的是一种提供对于数据进行顺序写随机读的快速访问以及持久化能力的、磁盘等具有非易失存储性质的、大容量队列存储数据结构。所述持久化队列存储空间可根据实际应用的需要进行设置,比如可以基于数据库系统、文件系统等数据系统来实现;其数据存储结构也可以根据实际应用的需要以及消息队列数据的特点进行设置,比如采用行存储、列存储、K-V存储、对象存储等等,只要所述持久化队列存储空间能够满足相应的数据读写和队列语义能力要求即可;另外,所述持久化队列存储空间的大小也可以根据实际应用的需要以及消息队列数据的数据量进行选择或设置,本公开对于所述持久化队列存储空间的大小不作具体限定。
在本公开一实施方式中,所述消息队列与持久化队列存储空间之间的映射关系可自动生成,这样不仅使得每一消息队列都具有与其对应的持久化队列存储空间,而且还能够快速地对于用于存储所述消息队列的持久化队列存储空间进行确定,从而节省持久化队列存储空间分配时间。
在本公开一实施方式中,所述消息消费指令指的是消息消费方发出的用于消费消息、获取所消费的消息的指令。
在上述实施方式中,当确定用于接收消息生产方生产的消息的消息队列满足所述消息接收条件时,就可根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入相应的所述持久化队列存储空间中。当接收到消息消费方发出的消息消费指令时,先尝试从内存中读取目标消费消息,若确定能够从内存中读取所述目标消费消息,则根据所述消息消费指令直接从所述内存中读取所述目标消费消息,若遇到机器掉电、无法开机、系统崩溃等异常情况导致无法从内存中读取目标消费消息时,即确定此时无法从内存中读取目标消费消息,再根据所述消息消费指令从所述持久化队列存储空间中读取得到所述消息消费方想要的目标消费消息,并将所述目标消费消息发送给消息消费方,从而借助持久化队列存储完成消息的点对点订阅。
在本公开一实施方式中,所述存储模块301可被配置为:
响应于确定消息队列满足消息接收条件,确定所述消息队列与持久化队列存储空间之间的映射关系;
根据所述映射关系确定与所述消息队列对应的持久化队列存储空间;
将所述消息队列存储入与所述消息队列对应的持久化队列存储空间中。
在该实施方式中,为了将所述消息队列快速存储入持久化队列存储空间中,在确定消息队列满足消息接收条件之后,首先确定所述消息队列与持久化队列存储空间之间的映射关系,然后根据所述映射关系确定与所述消息队列对应的持久化队列存储空间,最后将所述消息队列存储入基于所述映射关系获得的、与所述消息队列对应的持久化队列存储空间中。
在本公开一实施方式中,所述存储模块301中将所述消息队列存储入所述持久化队列存储空间中的部分,可被配置为:
将所述消息队列以同步或异步的方式存储入所述持久化队列存储空间中。
在该实施方式中,所述消息队列可以以同步的方式存储入所述持久化队列存储空间中,也可以以异步的方式存储入所述持久化队列存储空间中。比如,当系统空闲或者运力足够时,可将所述消息队列以同步的方式存储入所述持久化队列存储空间中,但若系统繁忙或者运力不足时,则可以异步的方式将所述消息队列存储入所述持久化队列存储空间中,以在缓解系统压力的情况下,还能保证消息队列的有效存储。
其中,在将所述消息队列存储入所述持久化队列存储空间中时,亦遵守先入先出的存储规则。
在本公开一实施方式中,所述消息消费指令携带有目标消费消息队列标识信息,其中,所述目标消费消息队列标识信息用于对于所述消息消费方想要消费、获取的消息队列进行可区别性的标识,其可由所述消息消费方确定。
在该实施方式中,所述读取模块302可被配置为:
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,读取所述消息消费指令中携带的目标消费消息队列标识信息;
获取消息队列与持久化队列存储空间之间的映射关系;
根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列对应的目标持久化队列存储空间;
从所述目标持久化队列存储空间中读取所述目标消费消息队列,得到所述目标消费消息。
在该实施方式中,当接收到所述消息消费方发送的消息消费指令后,首先读取所述消息消费指令中携带的目标消费消息队列标识信息;然后获取消息队列与持久化队列存储空间之间的映射关系;根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列标识信息所标识的目标消费消息队列对应的目标持久化队列存储空间,其中,所述目标持久化队列存储空间指的是存储有所述目标消费消息队列的存储空间;最后从所述目标持久化队列存储空间中读取所述目标消费消息队列,所述目标消费消息队列中的消息即为所述消息消费方需要的目标消费消息。
在本公开另一实施方式中,所述消息消费指令还携带有目标消费消息标识信息,其中,所述目标消费消息标识信息用于对于所述消息消费方想要消费、获取的消息进行可区别性的标识,其亦可由所述消息消费方确定。
在该实施方式中,所述读取模块302还可被配置为:
根据所述目标消费消息标识信息从所述目标消费消息队列中过滤得到所述目标消费消息。
在该实施方式中,若所述消息消费方还指定了目标消费消息标识信息,则需将所述目标消费消息标识信息作为过滤条件信息,对于所述目标消费消息队列中的消息进行过滤,过滤得到的、具有与所述目标消费消息标识信息一致的标识信息的消息为最终所述消息消费方需要的消息,即目标消费消息。
上文提及,当接收到消息消费方发出的消息消费指令时,先尝试从内存中读取目标消费消息,若确定能够从内存中读取所述目标消费消息,则根据所述消息消费指令直接从所述内存中读取所述目标消费消息,若遇到机器掉电、无法开机、系统崩溃等异常情况导致无法从内存中读取目标消费消息时,再根据所述消息消费指令从所述持久化队列存储空间中读取得到所述消息消费方想要的目标消费消息,即在本公开一实施方式中,所述读取模块302还可被配置为:
接收到消息消费指令,且确定能够从内存中读取目标消费消息时,根据所述消息消费指令从所述内存中读取所述目标消费消息。
在本公开一实施方式中,所述装置还包括:
路由模块,被配置为响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中。
在该实施方式中,为了缩短消息路由所需要的时间,提高消息路由效率,所述消息生产方在发送其生产的消息时还同时会发送路由参数,或者使所述消息携带有所述路由参数,以借助所述路由参数将所述消息准确地路由至与所述路由参数对应的目的消息队列中。
在本公开一实施方式中,所述路由参数至少包括目标路由标识信息,其中,所述目标路由标识信息用于对于处理所述消息的目标路由进行区别性的标识,即,根据所述目标路由标识信息即可确定对于消息执行路由操作的目标路由设备。
在该实施方式中,所述路由模块可被配置为:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数确定与所述路由参数对应的目标路由设备;
获取所述目标路由设备与目标消息队列之间的预设对应关系;
根据所述预设对应关系确定与所述路由参数对应的目标消息队列;
将所述消息路由至所述目标消息队列中。
在该实施方式中,在接收到消息生产方生产的消息以及路由参数之后,根据所述路由参数确定与所述路由参数对应的目标路由设备,即后续对于所述消息执行路由操作的目标路由设备;然后获取所述目标路由设备与目标消息队列之间的预设对应关系,其中,所述目标路由设备与目标消息队列之间的对应关系可预先设置,这样不仅使得每一路由设备都对应设置有可放置消息的消息队列,而且还能够快速地对于用于放置所述消息的消息队列进行确定,从而节省消息路由时间,提高消息路由效率;根据所述预设对应关系确定用于放置所述消息的目标消息队列之后,即可将所述消息路由至所述目标消息队列中。
在本公开一实施方式中,所述装置还包括:
维护模块,被配置为对于所述映射关系和/或预设对应关系进行维护和管理。
在该实施方式中,为了保障所述映射关系和/或预设对应关系的准确性,还需对于所述映射关系和/或预设对应关系进行定期的维护和管理,以适应并体现所述映射关系和/或预设对应关系的变化。比如,可基于所述映射关系和/或预设对应关系生成关系元数据,并对其进行持久化存储,当所述映射关系和/或预设对应关系发生变化时,对于持久化存储的所述映射关系和/或预设对应关系进行更新。
本公开实施例还公开了一种电子设备,所述电子设备包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述任一方法步骤。
图4是适于用来实现根据本公开一实施方式的消息处理方法的计算机系统的结构示意图。
如图4所示,计算机系统400包括处理单元401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行上述实施方式中的各种处理。在RAM403中,还存储有系统400操作所需的各种程序和数据。处理单元401、ROM402以及RAM403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。其中,所述处理单元401可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述消息处理方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开实施例的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (25)
1.一种消息处理方法,包括:
响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中;
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取所述目标消费消息;
将所述目标消费消息发送给消息消费方。
2.根据权利要求1所述的方法,所述响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中,包括:
响应于确定消息队列满足消息接收条件,确定所述消息队列与持久化队列存储空间之间的映射关系;
根据所述映射关系确定与所述消息队列对应的持久化队列存储空间;
将所述消息队列存储入与所述消息队列对应的持久化队列存储空间中。
3.根据权利要求1或2所述的方法,所述消息接收条件为以下条件中的一种或多种:
消息队列所接收消息的数量达到预设数量阈值;
消息队列所接收消息的长度达到预设长度阈值;
消息队列接收消息的时间达到预设时间阈值。
4.根据权利要求1-3任一所述的方法,所述将所述消息队列存储入所述持久化队列存储空间中,被实施为:
将所述消息队列以同步或异步的方式存储入所述持久化队列存储空间中。
5.根据权利要求1-4任一所述的方法,所述消息消费指令携带有目标消费消息队列标识信息;
所述接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取目标消费消息,包括:
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,读取所述消息消费指令中携带的目标消费消息队列标识信息;
获取消息队列与持久化队列存储空间之间的映射关系;
根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列对应的目标持久化队列存储空间;
从所述目标持久化队列存储空间中读取所述目标消费消息队列,得到所述目标消费消息。
6.根据权利要求5所述的方法,所述消息消费指令还携带有目标消费消息标识信息;
所述接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取目标消费消息,还包括:
根据所述目标消费消息标识信息从所述目标消费消息队列中过滤得到所述目标消费消息。
7.根据权利要求1-6任一所述的方法,还包括:
接收到消息消费指令,且确定能够从内存中读取目标消费消息时,根据所述消息消费指令从所述内存中读取所述目标消费消息。
8.根据权利要求1-6任一所述的方法,还包括:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中。
9.根据权利要求8所述的方法,所述路由参数至少包括目标路由标识信息;
所述响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中,包括:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数确定与所述路由参数对应的目标路由设备;
获取所述目标路由设备与目标消息队列之间的预设对应关系;
根据所述预设对应关系确定与所述路由参数对应的目标消息队列;
将所述消息路由至所述目标消息队列中。
10.根据权利要求1-9任一所述的方法,还包括:
对于所述映射关系和/或预设对应关系进行维护和管理。
11.根据权利要求1-10任一所述的方法,所述持久化队列存储空间为远程持久化队列存储空间。
12.一种消息处理装置,包括:
存储模块,被配置为响应于确定消息队列满足消息接收条件,根据所述消息队列与持久化队列存储空间之间的映射关系,将所述消息队列存储入所述持久化队列存储空间中;
读取模块,被配置为接收到消息消费指令,且确定无法从内存中读取目标消费消息时,根据所述消息消费指令从所述持久化队列存储空间中读取所述目标消费消息;
发送模块,被配置为将所述目标消费消息发送给消息消费方。
13.根据权利要求12所述的装置,所述存储模块被配置为:
响应于确定消息队列满足消息接收条件,确定所述消息队列与持久化队列存储空间之间的映射关系;
根据所述映射关系确定与所述消息队列对应的持久化队列存储空间;
将所述消息队列存储入与所述消息队列对应的持久化队列存储空间中。
14.根据权利要求12或13所述的装置,所述消息接收条件为以下条件中的一种或多种:
消息队列所接收消息的数量达到预设数量阈值;
消息队列所接收消息的长度达到预设长度阈值;
消息队列接收消息的时间达到预设时间阈值。
15.根据权利要求12-14任一所述的装置,所述将所述消息队列存储入所述持久化队列存储空间中的部分,被配置为:
将所述消息队列以同步或异步的方式存储入所述持久化队列存储空间中。
16.根据权利要求12-15任一所述的装置,所述消息消费指令携带有目标消费消息队列标识信息;
所述读取模块被配置为:
接收到消息消费指令,且确定无法从内存中读取目标消费消息时,读取所述消息消费指令中携带的目标消费消息队列标识信息;
获取消息队列与持久化队列存储空间之间的映射关系;
根据所述目标消费消息队列标识信息以及所述映射关系确定与所述目标消费消息队列对应的目标持久化队列存储空间;
从所述目标持久化队列存储空间中读取所述目标消费消息队列,得到所述目标消费消息。
17.根据权利要求16所述的装置,所述消息消费指令还携带有目标消费消息标识信息;
所述读取模块还被配置为:
根据所述目标消费消息标识信息从所述目标消费消息队列中过滤得到所述目标消费消息。
18.根据权利要求12-17任一所述的装置,所述读取模块还被配置为:
接收到消息消费指令,且确定能够从内存中读取目标消费消息时,根据所述消息消费指令从所述内存中读取所述目标消费消息。
19.根据权利要求12-18任一所述的装置,还包括:
路由模块,被配置为响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数将所述消息路由至与所述路由参数对应的消息队列中。
20.根据权利要求19所述的装置,所述路由参数至少包括目标路由标识信息;
所述路由模块被配置为:
响应于接收到消息生产方生产的消息以及路由参数,根据所述路由参数确定与所述路由参数对应的目标路由设备;
获取所述目标路由设备与目标消息队列之间的预设对应关系;
根据所述预设对应关系确定与所述路由参数对应的目标消息队列;
将所述消息路由至所述目标消息队列中。
21.根据权利要求12-20任一所述的装置,还包括:
维护模块,被配置为对于所述映射关系和/或预设对应关系进行维护和管理。
22.根据权利要求12-21任一所述的装置,所述持久化队列存储空间为远程持久化队列存储空间。
23.一种电子设备,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-11任一项所述的方法步骤。
24.一种计算机可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1-11任一项所述的方法步骤。
25.一种计算机程序产品,包括计算机程序/指令,其中,该计算机程序/指令被处理器执行时实现权利要求1-11任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110185186.2A CN113296976A (zh) | 2021-02-10 | 2021-02-10 | 消息处理方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110185186.2A CN113296976A (zh) | 2021-02-10 | 2021-02-10 | 消息处理方法、装置、电子设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113296976A true CN113296976A (zh) | 2021-08-24 |
Family
ID=77318903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110185186.2A Pending CN113296976A (zh) | 2021-02-10 | 2021-02-10 | 消息处理方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113296976A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448757A (zh) * | 2021-08-30 | 2021-09-28 | 阿里云计算有限公司 | 消息处理方法、装置、设备、存储介质和系统 |
CN113961379A (zh) * | 2021-12-22 | 2022-01-21 | 零犀(北京)科技有限公司 | 基于人机对话的消息处理方法及装置 |
CN116909779A (zh) * | 2023-09-11 | 2023-10-20 | 中移(苏州)软件技术有限公司 | 一种消息处理方法、装置及相关设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130076333A (ko) * | 2011-12-28 | 2013-07-08 | 주식회사 포스코아이씨티 | 메시지 큐잉 시스템 및 방법 |
CN105227662A (zh) * | 2015-09-30 | 2016-01-06 | 努比亚技术有限公司 | 消息处理方法、装置和系统 |
CN106250249A (zh) * | 2016-08-09 | 2016-12-21 | 广州唯品会信息科技有限公司 | 消息队列的控制方法及装置 |
CN107038075A (zh) * | 2015-07-14 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN109885410A (zh) * | 2019-01-09 | 2019-06-14 | 广州视源电子科技股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN110661849A (zh) * | 2019-08-30 | 2020-01-07 | 中国人民财产保险股份有限公司 | 一种请求处理方法、装置、电子设备及存储介质 |
CN110968431A (zh) * | 2018-09-28 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 一种消息处理方法、装置及设备 |
CN111221663A (zh) * | 2019-11-21 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种消息数据处理方法、装置、设备及可读存储介质 |
CN111327696A (zh) * | 2020-02-17 | 2020-06-23 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及系统 |
CN112069195A (zh) * | 2020-09-09 | 2020-12-11 | 上海依图网络科技有限公司 | 基于数据库的消息传输方法、装置、电子设备及存储介质 |
-
2021
- 2021-02-10 CN CN202110185186.2A patent/CN113296976A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130076333A (ko) * | 2011-12-28 | 2013-07-08 | 주식회사 포스코아이씨티 | 메시지 큐잉 시스템 및 방법 |
CN107038075A (zh) * | 2015-07-14 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN105227662A (zh) * | 2015-09-30 | 2016-01-06 | 努比亚技术有限公司 | 消息处理方法、装置和系统 |
CN106250249A (zh) * | 2016-08-09 | 2016-12-21 | 广州唯品会信息科技有限公司 | 消息队列的控制方法及装置 |
CN110968431A (zh) * | 2018-09-28 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 一种消息处理方法、装置及设备 |
CN109885410A (zh) * | 2019-01-09 | 2019-06-14 | 广州视源电子科技股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN110661849A (zh) * | 2019-08-30 | 2020-01-07 | 中国人民财产保险股份有限公司 | 一种请求处理方法、装置、电子设备及存储介质 |
CN111221663A (zh) * | 2019-11-21 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种消息数据处理方法、装置、设备及可读存储介质 |
CN111327696A (zh) * | 2020-02-17 | 2020-06-23 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及系统 |
CN112069195A (zh) * | 2020-09-09 | 2020-12-11 | 上海依图网络科技有限公司 | 基于数据库的消息传输方法、装置、电子设备及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448757A (zh) * | 2021-08-30 | 2021-09-28 | 阿里云计算有限公司 | 消息处理方法、装置、设备、存储介质和系统 |
CN113448757B (zh) * | 2021-08-30 | 2022-02-01 | 阿里云计算有限公司 | 消息处理方法、装置、设备、存储介质和系统 |
CN113961379A (zh) * | 2021-12-22 | 2022-01-21 | 零犀(北京)科技有限公司 | 基于人机对话的消息处理方法及装置 |
CN116909779A (zh) * | 2023-09-11 | 2023-10-20 | 中移(苏州)软件技术有限公司 | 一种消息处理方法、装置及相关设备 |
CN116909779B (zh) * | 2023-09-11 | 2024-01-26 | 中移(苏州)软件技术有限公司 | 一种消息处理方法、装置及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113296976A (zh) | 消息处理方法、装置、电子设备、存储介质及程序产品 | |
CN107391271B (zh) | 一种基于消息队列系统的延时任务触发方法和装置 | |
CN107241281B (zh) | 一种数据处理方法及其装置 | |
CN110808922B (zh) | 一种消息处理方法、装置、存储介质及电子设备 | |
CN103370917B (zh) | 消息处理方法及服务器 | |
CN112579148B (zh) | 基于业务代理的业务消息处理方法、装置及电子设备 | |
CN111221638B (zh) | 并发任务的调度处理方法、装置、设备和介质 | |
CN109766172B (zh) | 一种异步任务调度方法以及装置 | |
CN113485822A (zh) | 内存管理方法、系统、客户端、服务器及存储介质 | |
CN102255926A (zh) | MapReduce系统中的任务分配方法、系统及装置 | |
CN110430142B (zh) | 用于控制流量的方法和装置 | |
CN111427694A (zh) | 任务执行方法、装置、系统和服务器 | |
CN110740164A (zh) | 服务器确定方法、调控方法、装置、设备及存储介质 | |
CN114155026A (zh) | 一种资源分配方法、装置、服务器及存储介质 | |
CN110602004A (zh) | 监管数据上报、电子装置、设备及计算机可读存储介质 | |
CN114390451A (zh) | 基于消息队列的5g消息批量发送方法、装置及电子设备 | |
CN110290009B (zh) | 一种数据调度方法、装置及计算机可读存储介质 | |
CN112379982A (zh) | 任务处理方法、装置、电子设备及计算机可读存储介质 | |
CN113760559A (zh) | 一种双核通信方法和电子设备 | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
CN102143053A (zh) | 传输数据的方法、装置和系统 | |
CN109862069B (zh) | 消息处理方法和装置 | |
CN109582242B (zh) | 级联存储阵列系统的地址确定方法、装置、电子设备 | |
CN114500546B (zh) | 基于负载均衡集群的通信消息发送方法、装置及设备 | |
CN112202914B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057564 Country of ref document: HK |
|
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210824 |
|
RJ01 | Rejection of invention patent application after publication |