CN112583931B - 消息处理方法、消息中间件、电子设备和存储介质 - Google Patents
消息处理方法、消息中间件、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112583931B CN112583931B CN202011569032.5A CN202011569032A CN112583931B CN 112583931 B CN112583931 B CN 112583931B CN 202011569032 A CN202011569032 A CN 202011569032A CN 112583931 B CN112583931 B CN 112583931B
- Authority
- CN
- China
- Prior art keywords
- message
- service module
- processed
- module
- slave
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开提供了消息处理方法、消息中间件、电子设备和存储介质,涉及计算机技术领域,尤其涉及云计算领域。具体实现方案为:接收消息生产者发送的待处理消息;在消息中间件中的代理模块的配置文件中查询待处理消息的主题信息所对应的分区键,并根据分区键,从待处理消息中获取分区信息;根据主题信息和分区信息,从消息中间件中的至少一个服务模块中确定出目标服务模块,并将待处理消息发送至目标服务模块。根据本公开的技术方案可以提高消息中间件的并发处理能力。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及云计算领域。
背景技术
消息中间件在互联网大规模分布式提交***中,能够起到削峰、解耦、流量控制等作用。因此,在***架构中占据核心位置。消息中间件的设计也将对***架构产生重要影响。因此,消息中间件的性能是***稳定运行的前提。
发明内容
本公开提供了一种消息处理方法、消息中间件、电子设备和存储介质。
根据本公开的一方面,提供了一种消息处理方法,包括:
接收消息生产者发送的待处理消息;
在消息中间件中的代理模块的配置文件中查询待处理消息的主题信息所对应的分区键,并根据分区键,从待处理消息中获取分区信息;
根据主题信息和分区信息,从消息中间件中的至少一个服务模块中确定出目标服务模块,并将待处理消息发送至目标服务模块。
根据本公开的另一方面,提供了一种消息中间件,包括:
代理模块,用于接收消息生产者发送的待处理消息,在代理模块的配置文件中查询待处理消息的主题信息所对应的分区键,并根据分区键,从待处理消息中获取分区信息;
代理模块还用于根据主题信息和分区信息,从消息中间件中的至少一个服务模块中确定出目标服务模块,并将待处理消息发送至目标服务模块。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开任一实施例中的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行本公开任一实施例中的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本公开任一实施例中的方法。
根据本公开的技术方案,不同主题信息或不同分区信息的消息可以分发到不同的服务模块中进行处理,因此,提高了消息中间件的并发处理能力。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开一个实施例的消息处理方法的示意图;
图2是根据本公开另一个实施例的消息处理方法的示意图;
图3是根据本公开又一个实施例的消息处理方法的示意图;
图4是根据本公开一个实施例的消息中间件的示意图;
图5是根据本公开另一个实施例的消息中间件的示意图;
图6是用来实现本公开实施例的消息处理方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
目前,大多数消息中间件被设计为“拉”模型,由消息消费者从消息中间件中拉取消息。在消息消费者处于竞争模式,即单个消息消费者部署多个机器,多个机器竞争同一消息的情况下,采用“拉”模型难以保证消息的有序处理。首先,由于单个消息消费者部署多个机器,任一机器只处理部分消息,因此,在消息消费者中无法准确记录当前的消息处理节点或者说消息进度。其次,由于消息处理节点需要先查后改,因此,如果在第三方的存储引擎中记录消息处理节点,需要对数据进行加锁,且锁住的临界区会增加网络交互,性能无法保证。此外,也无法实现并发更新。
在一种解决方案中,集群***中包括若干个消息生产者(Producer)、若干个中间方(Broker)、若干个消息消费者(Consumer)以及一个协调服务集群(ZooKeeper)。其中,Producer发送消息到Broker,Consumer从Broker中读取消息。ZooKeeper用于管理集群***配置、集群选主、消费者分组平衡等。***中采用“拉”模型构建消息中间件,在Consumer中记录消息进度。每个Consumer对应一个分区,通过增加分区的方式提高并发。但并发区的增多会收到资源限制,导致故障恢复时间变长。
在另一种解决方案中,集群***中包括若干个消息生产者(producer)、若干个中间方(Broker)、若干个消息消费者(Consumer)以及消息交换机(Exchange)。Exchange指定路由消息到多个队列中所依据的规则。Consumer建立与多个队列分布对应的通道以消费相应的数据。但是,该方案不利于支持消息堆积。在消息堆积过多的情况下,性能将急剧下降。
本公开实施例提供的方案,主要用于解决上述问题中的至少一个。
图1示出了本公开实施例提供的消息处理方法的示意图。如图1所示,该方法包括:
步骤S11,接收消息生产者发送的待处理消息;
步骤S12,在消息中间件中的代理模块的配置文件中查询待处理消息的主题信息所对应的分区键,并根据分区键,从待处理消息中获取分区信息;
步骤S13,根据主题信息和分区信息,从消息中间件中的至少一个服务模块中确定出目标服务模块,并将待处理消息发送至目标服务模块。
上述方法可以应用于消息中间件,由消息中间件执行。具体来说,上述步骤S11-S13,可以由消息中间件中的代理模块执行。该代理模块用于路由待处理消息。
代理模块的配置文件可以预先配置于代理模块中。配置文件中可以包含多种主题信息以及与多种主题信息中的每种主题信息对应的分区键(Partition Key)。一些示例中,某些主题信息对应的分区键可以为空值。
其中,主题信息可以用于表征待处理消息对应的场景。例如,在用户交互场景中,主题信息可以是用户(User)。在信息分享场景中,主题信息可以是分享信息(Post)等。待处理消息中包含主题信息,代理模块可以直接从待处理消息中读取主题信息。
分区键可以指用于分区的信息的类型,例如消息中的某个字段名称。示例性地,分区键可以与待处理消息的处理时序要求相关。例如,如果同一User ID的消息需要依序推送给消息消费者,而同一Post ID的消息不需要依序推送,则分区键可以是User ID。
举例而言,配置文件中可记录主题User对应的分区键为消息中的User ID(Identity Document,身份标识)。则代理模块确定待处理消息的User ID,例如011,作为分区信息。再根据主题信息User和分区信息011,将待处理消息发送至对应的服务模块,即目标服务模块。
示例性地,目标服务模块可以是消息中间件中与主题信息对应的至少一个服务模块中的与分区信息对应的服务模块。参考图2,消息中间件中包括代理模块21和至少一个服务模块22,图2中以3个服务模块221至223为例。主题信息Topic A对应于服务模块221和服务模块222,其中,服务模块221对应于分区信息User ID1,服务模块222对应于User ID2。主题信息Topic B对应于服务模块223,主题信息Topic B对应的分区键为空值或者说主题信息Topic B不对应任何分区键。基于此,代理模块21接收到主题信息为Topic A、分区信息为User ID2的待处理消息时,根据主题信息可以从多个服务模块中选取服务模块221和服务模块222,根据分区信息可以从服务模块221和服务模块222确定出目标服务模块222。
基于上述方法,不同主题信息或不同分区信息的消息可以分发到不同的服务模块中进行处理,因此,提高了消息中间件的并发处理能力。也就是说,消息中间件的并发吞吐量增加。
在一种示例性的实施方式中,消息处理方法还可以包括:
消息中间件中的第一从属服务模块从目标服务模块中获取待处理消息;其中,第一从属服务模块为消息中间件中的至少一个从属服务模块中与目标服务模块连接的从属服务模块;
在目标消息消费者所对应的命令标识(Command Prompt,cmd)包括待处理消息的命令标识的情况下,第一从属服务模块将待处理消息发送至目标消息消费者;其中,目标消息消费者为与第一从属服务模块连接的消息消费者。
示例性地,消息中间件中的每个服务模块,均连接至少一个从属服务模块。每个从属服务模块均能够从服务模块中拉取待处理消息。也就是说,每个从属服务模块均能获取到其所连接的服务模块从代理模块接收的所有消息。
从属服务模块根据待处理消息的命令标识确定是否对待处理消息进行处理。举例而言,第一从属服务模块所连接的消息消费者对应于一个或多个命令标识例如11和12,如果待处理消息的命令标识为11或12,则第一从属服务模块将待处理信息推送到该消息消费者;如果待处理消息的命令标识为13,则从属服务模块不对待处理消息进行处理,由连接目标服务模块的其他从属服务模块处理该消息。
根据上述实施方式,由于服务模块下游可以设置从属服务模块,各从属服务模块根据待处理消息的命令标识确定是否对待处理消息进行处理,因此,可以由多个从属服务模块协作完成消息处理,进一步增加消息中间件的吞吐量,提高并发能力。
示例性地,消息中间件中的从属服务模块下游还可以设置次级从属服务模块,实现服务模块的多级级联。例如,在第一从属服务模块下游还可以连接多个次级从属服务模块,第一从属服务模块接收并存储待处理消息,次级从属服务模块从第一从属服务模块中读取待处理消息,根据待处理消息的命令标识确定是否对待处理消息进行处理。通过服务模块的多级级联,可以进一步增加消息中间件的吞吐量,提高并发能力。
在一种示例性的实施方式中,消息处理方法还可以包括:
第一从属服务模块根据待处理消息的处理次序编号,更新待处理消息的命令标识所对应的推送进度信息,并将推送进度信息发送至消息中间件中的备份模块。
示例性地,同一命令标识所对应的消息可以根据接收时间或其他因素递增编号。例如,在某个时刻读取到的命令标识为11的消息的处理次序编号为1,则读取到的下一个命令标识为11的消息的处理次序编号为2,利用处理次序编号,依次发送同一命令标识的不同消息。基于此,处理次序编号能够表征同一命令标识的消息的处理进度。
根据上述实施方式,在第一从属服务模块中根据消息的处理次序编号更新推送进度消息,也就是说,将时序控制集成在从属服务模块中,因此,可以减轻上游服务模块的负担并确保时序准确。进一步地,将推送进度信息发送至备份模块,可以对推送进度信息进行备份,提高可靠性。
示例性地,从属服务模块中可以包括子服务模块和推送模块(Pusher)。其中,子服务模块用于存储消息,Pusher用于根据命令标识推送消息,以及记录和备份推送进度信息。
实际应用中,可以由消息中间件的运维平台,在消息中间件中增加、删除模块,或者修改消息中间件中模块的配置文件。在一种示例性的实施方式中,消息处理方法还可以包括:
在第一从属服务模块发生故障的情况下,消息中间件的运维平台在消息中间件中创建第二从属服务模块;
第二从属服务模块从备份模块中读取推送进度信息。
示例性地,运维平台可以在第二从属服务模块的配置文件中写入第二从属服务模块的上游为目标服务模块,下游为第一从属服务模块所连接的消息消费者,则第二从属服务模块可以替代第一从属服务模块。
根据上述实施方式,第二从属服务模块从备份模块中读取推送进度信息,因此,即使第一从属服务模块发生故障,第二从属服务模块也可以读取到第一从属服务模块的处理进度,并且,第二从属服务模块可以从目标服务模块中读取所有的待处理消息。因此,第二从属服务模块可以继续在原进度基础上分发待处理消息,确保时序准确。可见,根据上述实施方式可以提高消息中间件的可用信息。
在一种示例性的实施方式中,消息处理方法还可以包括:
在第一从属服务模块读取到待处理消息的情况下,目标服务模块向代理模块发送接收确认信息;
代理模块在接收到确认信息的情况下,结束对待处理消息的处理。
也就是说,第一从属服务模块读取到待处理消息,会向目标服务模块反馈,目标服务模块向代理模块反馈,在接收到反馈的确认信息的情况下,代理模块结束对待处理消息的处理。若在一定时间内没有接收到确认信息,则向目标服务模块再次发送待处理消息。
根据上述实施方式,可以确保第一从属服务模块读取到待处理消息,避免丢失消息,提高消息中间件的可靠性。
结合上述实施方式,示例性地,消息处理方法还可以包括:
在目标服务模块发生故障的情况下,消息中间件的运维平台基于对第一从属服务模块的配置文件的更新,将第一从属服务模块切换为新的目标服务模块。
也就是说,消息中间件的运维平台通过更新第一从属服务模块的配置文件,例如修改第一从属服务模块的上下游信息以及功能信息,使得第一从属服务模块执行目标服务模块的操作,实现将其切换为该目标服务模块。
基于此,可以实现服务模块和从属服务模块之间的主从切换,提高消息中间件的可靠性。此外,由于在确保从属服务模块读取到待处理消息的情况下,代理模块才结束发送待处理消息,因此,即使从属服务模块获取待处理消息滞后于服务模块获取待处理消息,但将从属服务模块切换为服务模块,仍可以收到代理模块重新发送的待处理消息。因此,可以提高消息中间件的可靠性。
图3示出了本公开实施例中消息处理方法的一个应用示例的示意图。消息处理方法可以由图3所示的消息中间件执行。其中,消息中间件包括至少一个代理模块32、至少一个服务模块33、至少一个从属服务模块34以及一个名字服务模块38。其中,从属服务模块34包括子服务模块35和推送模块36。消息中间件与消息生产者31和消息消费者37例如消费者A、B和C交互。
其中,代理模块用于路由待处理消息,例如将主题信息为topic A的待处理消息路由至服务模块33。实际应用中,对应于topic A的服务模块可以有多个,此处以一个作为示例。代理模块还可以用于填充待处理消息的字段,例如填充待处理消息的时间戳、IDC(Internet Data Center,互联网数据中心)来源、发送方IP(Internet Protocol,网际互联协议)地址等,以便于下游模块对消息进行处理。
服务模块33用于存储待处理消息,以便于从属服务模块34读取待处理消息。从属服务模块34中的子服务模块35用于存储待处理消息,以便于推送模块36读取待处理消息。推送模块36集成时序保证和并发控制功能,用于推送消息至消费者37。推送模块36还将记录的处理进度信息备份至备份模块39,以提高可靠性。
其中,服务模块和从属服务模块均支持冗余备份和级联,并支持主从切换。
消息中间件中的名字服务模块38用于记录其他模块的元数据信息,例如IP地址、端口号等定位信息。新增的模块例如代理模块32、服务模块33和消息消费者,向名字服务模块38注册信息。当运维平台在消息中间件中增加、删除模块或修改模块的配置文件时,各模块根据配置文件确定自身上下游模块和功能信息,可以向名字服务模块38请求获取上下游模块的定位信息。例如,消费生产者可以获取代理模块定位信息,以便于向代理模块发送消息。代理模块可以获取服务模块定位信息,以便于向服务模块发送消息。从属服务模块可以获取服务模块定位信息,以便于从服务模块中读取消息。推送模块可以获取消费者定位信息,以便于向消费者发送消息。
如图3所示的应用示例中,消费者A和消费者B部署了多个机器,多个机器处于竞争模式,但记录进度由推送模块36完成,因此,可以保证时序准确。对于多主模式的消费者C,可以由在线的消费者C向代理模块发送注册和心跳信息,代理模块向推送模块转发注册和心跳信息,推送模块向在线的消费者C发送注册和心跳信息。
可见,根据本公开实施例的方法,可以提高消息中间件的并发处理能力以及可靠性。
作为上述各方法的实现,本公开还提供一种消息中间件。如图4所示,消息中间件包括:
代理模块410,用于接收消息生产者发送的待处理消息,在代理模块的配置文件中查询待处理消息的主题信息所对应的分区键,并根据分区键,从待处理消息中获取分区信息;
代理模块410还用于根据主题信息和分区信息,从消息中间件中的至少一个服务模块中确定出目标服务模块420,并将待处理消息发送至目标服务模块420。
示例性地,如图5所示,消息中间件还包括:
第一从属服务模块510,用于从目标服务模块中获取待处理消息;其中,第一从属服务模块510为消息中间件中的至少一个从属服务模块中与目标服务模块连接的从属服务模块;
第一从属服务模块510还用于在目标消息消费者所对应的命令标识包括待处理消息的命令标识的情况下,将待处理消息发送至目标消息消费者;其中,目标消息消费者为与第一从属服务模块510连接的消息消费者。
示例性地,第一从属服务模块510,还用于根据待处理消息的处理次序编号,更新待处理消息的命令标识所对应的推送进度信息,并将推送进度信息发送至消息中间件中的备份模块520。
示例性地,消息中间件的运维平台500用于在第一从属服务模块510发生故障的情况下,在消息中间件中创建第二从属服务模块530;
第二从属服务模块530,用于从备份模块520中读取推送进度信息。
示例性地,如图5所示,消息中间件还包括:
目标服务模块420,用于在第一从属服务模块510读取到待处理消息的情况下,向代理模块410发送接收确认信息;
代理模块410,还用于在接收到确认信息的情况下,结束对待处理消息的处理。
示例性地,消息中间件的运维平台500用于在目标服务模块发生故障的情况下,基于对第一从属服务模块510的配置文件的更新,将第一从属服务模块510切换为新的目标服务模块。
本公开实施例提供的装置能够实现上述方法,具备相应的有益效果。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如消息处理方法。例如,在一些实施例中,消息处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的消息处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行消息处理方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (14)
1.一种消息处理方法,包括:
接收消息生产者发送的待处理消息;
在消息中间件中的代理模块的配置文件中查询所述待处理消息的主题信息所对应的分区键,并根据所述分区键,从所述待处理消息中获取分区信息;
根据所述主题信息和所述分区信息,从所述消息中间件中的至少一个服务模块中确定出目标服务模块,并将所述待处理消息发送至所述目标服务模块以使所述目标服务模块所连接的每个从属服务模块均能够从所述目标服务模块中拉取所述待处理消息,并根据所述待处理消息的命令标识,确定是否对所述待处理消息进行处理。
2.根据权利要求1所述的方法,还包括:
所述消息中间件中的第一从属服务模块从所述目标服务模块中获取所述待处理消息;其中,所述第一从属服务模块为所述消息中间件中的至少一个从属服务模块中与所述目标服务模块连接的从属服务模块;
在目标消息消费者所对应的命令标识包括所述待处理消息的命令标识的情况下,所述第一从属服务模块将所述待处理消息发送至所述目标消息消费者;其中,所述目标消息消费者为与所述第一从属服务模块连接的消息消费者。
3.根据权利要求2所述的方法,还包括:
所述第一从属服务模块根据所述待处理消息的处理次序编号,更新所述待处理消息的命令标识所对应的推送进度信息,并将所述推送进度信息发送至所述消息中间件中的备份模块。
4.根据权利要求3所述的方法,还包括:
在所述第一从属服务模块发生故障的情况下,所述消息中间件的运维平台在所述消息中间件中创建第二从属服务模块;
所述第二从属服务模块从所述备份模块中读取所述推送进度信息。
5.根据权利要求2所述的方法,还包括:
在所述第一从属服务模块读取到所述待处理消息的情况下,所述目标服务模块向所述代理模块发送接收确认信息;
所述代理模块在接收到确认信息的情况下,结束对所述待处理消息的处理。
6.根据权利要求5所述的方法,还包括:
在所述目标服务模块发生故障的情况下,所述消息中间件的运维平台基于对所述第一从属服务模块的配置文件的更新,将所述第一从属服务模块切换为新的目标服务模块。
7.一种消息中间件,包括:
代理模块,用于接收消息生产者发送的待处理消息,在所述代理模块的配置文件中查询所述待处理消息的主题信息所对应的分区键,并根据所述分区键,从所述待处理消息中获取分区信息;
所述代理模块还用于根据所述主题信息和所述分区信息,从所述消息中间件中的至少一个服务模块中确定出目标服务模块,并将所述待处理消息发送至所述目标服务模块以使所述目标服务模块所连接的每个从属服务模块均能够从所述目标服务模块中拉取所述待处理消息,并根据所述待处理消息的命令标识,确定是否对所述待处理消息进行处理。
8.根据权利要求7所述的消息中间件,还包括:
第一从属服务模块,用于从所述目标服务模块中获取所述待处理消息;其中,所述第一从属服务模块为所述消息中间件中的至少一个从属服务模块中与所述目标服务模块连接的从属服务模块;
所述第一从属服务模块还用于在目标消息消费者所对应的命令标识包括所述待处理消息的命令标识的情况下,将所述待处理消息发送至所述目标消息消费者;其中,所述目标消息消费者为与所述第一从属服务模块连接的消息消费者。
9.根据权利要求8所述的消息中间件,其中,
所述第一从属服务模块,还用于根据所述待处理消息的处理次序编号,更新所述待处理消息的命令标识所对应的推送进度信息,并将所述推送进度信息发送至所述消息中间件中的备份模块。
10.根据权利要求9所述的消息中间件,其中,
所述消息中间件的运维平台用于在所述第一从属服务模块发生故障的情况下,在所述消息中间件中创建第二从属服务模块;
所述第二从属服务模块,用于从所述备份模块中读取所述推送进度信息。
11.根据权利要求8所述的消息中间件,还包括:
所述目标服务模块,用于在所述第一从属服务模块读取到所述待处理消息的情况下,向所述代理模块发送接收确认信息;
所述代理模块,还用于在接收到确认信息的情况下,结束对所述待处理消息的处理。
12.根据权利要求11所述的消息中间件,其中,
所述消息中间件的运维平台用于在所述目标服务模块发生故障的情况下,基于对所述第一从属服务模块的配置文件的更新,将所述第一从属服务模块切换为新的目标服务模块。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使计算机执行权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011569032.5A CN112583931B (zh) | 2020-12-25 | 2020-12-25 | 消息处理方法、消息中间件、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011569032.5A CN112583931B (zh) | 2020-12-25 | 2020-12-25 | 消息处理方法、消息中间件、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112583931A CN112583931A (zh) | 2021-03-30 |
CN112583931B true CN112583931B (zh) | 2022-09-02 |
Family
ID=75139900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011569032.5A Active CN112583931B (zh) | 2020-12-25 | 2020-12-25 | 消息处理方法、消息中间件、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112583931B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590785A (zh) * | 2021-07-29 | 2021-11-02 | 百度在线网络技术(北京)有限公司 | 一种消息回复方法、装置、电子设备及存储介质 |
CN113630465B (zh) * | 2021-08-10 | 2024-03-12 | 北京百度网讯科技有限公司 | 消息处理方法、装置、设备以及存储介质 |
CN113656207B (zh) * | 2021-08-16 | 2023-11-03 | 北京百度网讯科技有限公司 | 故障处理方法、装置、电子设备和介质 |
CN113986601B (zh) * | 2021-12-27 | 2022-04-26 | 飞狐信息技术(天津)有限公司 | 消费信息查询方法及装置、存储介质及电子设备 |
CN114500546B (zh) * | 2022-01-25 | 2024-04-30 | 中国农业银行股份有限公司 | 基于负载均衡集群的通信消息发送方法、装置及设备 |
CN114827156B (zh) * | 2022-03-28 | 2023-12-01 | 阿里巴巴(中国)有限公司 | 消息调度的方法、装置、设备及存储介质 |
CN115086153B (zh) * | 2022-05-20 | 2024-05-28 | 阿里巴巴(中国)有限公司 | 消息处理***、消息处理方法、设备和存储介质 |
CN115618842B (zh) * | 2022-12-15 | 2023-04-11 | 浙江蓝鸽科技有限公司 | 一体化智慧校园数据中台*** |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130085895A1 (en) * | 2011-09-30 | 2013-04-04 | Oracle International Corporation | High throughput global order promising system |
US10212120B2 (en) * | 2016-04-21 | 2019-02-19 | Confluent, Inc. | Distributed message queue stream verification |
CN106131175B (zh) * | 2016-07-01 | 2019-05-21 | 微梦创科网络科技(中国)有限公司 | 一种信息获取、信息推送方法和设备 |
US20180063055A1 (en) * | 2016-08-26 | 2018-03-01 | Linkedin Corporation | Repartitioning a topic in a publish-subscribe message system |
CN106375462B (zh) * | 2016-09-13 | 2019-05-10 | 北京百度网讯科技有限公司 | 在分布式消息***中实现消息持久化的方法及装置 |
US20180091588A1 (en) * | 2016-09-26 | 2018-03-29 | Linkedin Corporation | Balancing workload across nodes in a message brokering cluster |
US10645181B2 (en) * | 2016-12-12 | 2020-05-05 | Sap Se | Meta broker for publish-subscribe-based messaging |
CN110162410A (zh) * | 2018-02-12 | 2019-08-23 | 北京京东尚科信息技术有限公司 | 一种消息处理方法和装置 |
WO2020075073A1 (en) * | 2018-10-11 | 2020-04-16 | Sensus Spectrum Llc | Methods for managing bandwidth allocation in a cloud-based system and related bandwidth managers and computer program products |
CN109831478A (zh) * | 2018-12-19 | 2019-05-31 | 天翼电子商务有限公司 | 基于规则及模型的分布式实时处理智能决策***及方法 |
CN111818112B (zh) * | 2019-04-11 | 2022-10-04 | ***通信集团四川有限公司 | 一种基于Kafka***的发送消息的方法和装置 |
CN110113420B (zh) * | 2019-05-08 | 2020-06-05 | 重庆大学 | 基于nvm的分布式消息队列管理*** |
-
2020
- 2020-12-25 CN CN202011569032.5A patent/CN112583931B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112583931A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112583931B (zh) | 消息处理方法、消息中间件、电子设备和存储介质 | |
US8799906B2 (en) | Processing a batched unit of work | |
CN108712332B (zh) | 一种通信方法、***和装置 | |
CN112069265B (zh) | 配置数据的同步方法、业务数据***、计算机***和介质 | |
CN110795503A (zh) | 分布式存储***的多集群数据同步方法及相关装置 | |
CN112217847A (zh) | 微服务平台及其实现方法、电子设备及存储介质 | |
CN112860342A (zh) | 微服务配置的方法、装置、设备、***以及存储介质 | |
CN113193947B (zh) | 实现分布式全局序的方法、设备、介质及程序产品 | |
CN113076304A (zh) | 一种分布式版本管理方法、装置和*** | |
CN114500633B (zh) | 数据转发方法、相关装置、程序产品及数据传输*** | |
US20160285969A1 (en) | Ordered execution of tasks | |
CN113067860B (zh) | 用于同步信息的方法、装置、设备、介质和产品 | |
CN103197920B (zh) | 一种并发控制方法、控制节点及*** | |
US8762533B2 (en) | Moving a project in a complex event processing cluster | |
CN111813795B (zh) | 在区块链网络中确认交易的方法及装置 | |
EP4036736A1 (en) | Operation management device, system, method, and non-transitory computer-readable medium in which program is stored | |
CN113141236A (zh) | 一种报文处理方法和装置 | |
CN112182003A (zh) | 一种数据同步方法和装置 | |
CN112187842A (zh) | 局域网数据处理***与局域网数据处理方法 | |
EP3193482B1 (en) | Message processing method and apparatus | |
CN113450097A (zh) | 跨新旧***的交易处理***及方法 | |
CN114785631A (zh) | 通信协议栈复用方法、通信方法、计算机设备及介质 | |
CN117201483A (zh) | 文件传输方法、装置、电子设备以及存储介质 | |
CN112417356A (zh) | 一种数据推送的方法、***、设备及可读存储介质 | |
CN114756173A (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 |