CN110875935A - 消息发布、处理、订阅方法、装置及系统 - Google Patents
消息发布、处理、订阅方法、装置及系统 Download PDFInfo
- Publication number
- CN110875935A CN110875935A CN201811003951.9A CN201811003951A CN110875935A CN 110875935 A CN110875935 A CN 110875935A CN 201811003951 A CN201811003951 A CN 201811003951A CN 110875935 A CN110875935 A CN 110875935A
- Authority
- CN
- China
- Prior art keywords
- message
- subscription
- node
- topic
- service node
- 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
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/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- 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/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供了一种消息发布、处理、订阅方法、装置及系统,方法包括:确定待发布消息所属的消息主题;以及,确定待发布消息在消息主题中所对应的虚拟队列;向消息服务节点发送消息发布请求;其中,在消息服务节点中,消息主题对应至少一个虚拟队列;消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号,以使消息服务节点将待发布消息发布至上述消息主题中与虚拟队列序号对应的虚拟队列。本申请中,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
Description
技术领域
本申请涉及信息处理领域,尤其涉及一种消息发布、处理、订阅方法、装置及系统。
背景技术
消息中间件,利用高效可靠的消息传递机制进行数据交流,通过提供消息传递和消息排队模型可实现扩展进程间的通信。在消息中间件的消息传输模式中,发布/订阅模式是最常用的传输机制,发布者将消息发布到消息中间件上相关的消息主题,订阅者从该主题获取消息。
一般的,消息中间件上的消息主题通过消息队列进行消息的存储,发布者将消息发布至消息队列,订阅者从消息队列获取消息。现有技术中,一个消息主题采用一个消息队列,该消息队列在同一时刻只能开放给一个订阅者。因此,若是在同一时刻存在多个订阅者订阅该消息主题,则需要排队等待,耗时较长。
因此,有必要提出一种方案,以解决现有技术中当多个订阅者同时订阅同一消息主题时,需要排队等候,耗时较长的技术问题。
发明内容
本申请实施例的目的是提供一种消息发布、处理、订阅方法、装置及系统,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
为解决上述技术问题,本申请实施例是这样实现的:
本申请实施例提供了一种消息发布方法,包括:
确定待发布消息所属的消息主题;以及,确定所述待发布消息在所述消息主题中所对应的虚拟队列;
向所述消息服务节点发送消息发布请求;在所述消息服务节点中,所述消息主题对应至少一个虚拟队列;
其中,所述消息发布请求中携带有所述待发布消息、所述待发布消息所属的消息主题和所述待发布消息所对应的虚拟队列序号,以使所述消息服务节点将所述待发布消息发布至所述消息主题中与所述虚拟队列序号对应的虚拟队列。
本申请实施例还提供了一种消息处理方法,包括:
消息服务节点接收发布节点发送的消息发布请求;其中,所述消息发布请求中携带有待发布消息、所述待发布消息所属的消息主题和所述待发布消息所对应的虚拟队列序号;所述待发布消息所属的消息主题对应至少一个虚拟队列;
所述消息服务节点将所述待发布消息发布至所述消息主题中与所述虚拟队列序号对应的虚拟队列。
本申请实施例还提供了一种消息订阅方法,包括:
根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量;其中,在所述消息服务节点中,所述消息主题对应至少一个虚拟队列;
向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带订阅消息主题标识和所述订阅消息的数量,以使所述消息服务节点根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点;
接收所述消息服务节点发送的订阅消息。
本申请实施例还提供了一种消息发布装置,所述装置包括非暂态存储介质,所述非暂态存储介质存储有指令集,所述指令集被处理器执行时可实现本申请实施例提供的消息发布方法中任一项所述的方法。
本申请实施例还提供了一种消息处理装置,所述装置包括非暂态存储介质,所述非暂态存储介质存储有指令集,所述指令集被处理器执行时可实现本申请实施例提供的消息处理方法中任一项所述的方法。
本申请实施例还提供了一种消息订阅装置,所述装置包括非暂态存储介质,所述非暂态存储介质存储有指令集,所述指令集被处理器执行时可实现本申请实施例提供的消息订阅方法中任一项所述的方法。
本申请实施例还提供了一种消息处理系统,所述系统包括消息服务节点、至少一个发布节点和至少一个订阅节点;
所述发布节点,用于确定待发布消息所属的消息主题;以及,确定所述待发布消息在所述消息主题中所对应的虚拟队列,并向所述消息服务节点发送消息发布请求;其中,在所述消息服务节点中,所述消息主题对应至少一个虚拟队列;所述消息发布请求中携带有所述待发布消息、所述待发布消息所属的消息主题和所述待发布消息所对应的虚拟队列序号;
所述订阅节点,用于向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带有订阅消息主题标识;以及,还用于接收所述消息服务节点推送的订阅消息;
所述消息服务节点,用于接收所述发布节点发送的消息发布请求,并将所述待发布消息发布至所述消息主题中与所述虚拟队列序号对应的虚拟队列;以及,用于接收所述订阅节点发送的消息订阅请求,确定所述订阅消息主题标识所对应的订阅消息主题,并确定推送给所述订阅节点的订阅消息的数量,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
本实施例中的技术方案,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中,在消息服务节点中为消息主题虚拟出的消息队列的示意图。
图2为本申请实施例提供的消息发布方法的方法流程图之一;
图3为本申请实施例提供的消息处理方法的方法流程图之一;
图4为本申请实施例提供的消息处理方法的方法流程图之二;
图5为本申请实施例提供的消息处理方法中,消息服务处理订阅节点的消息订阅请求的方法流程图;
图6为本申请实施例提供的消息处理方法的方法流程图之三;
图7为本申请实施例提供的消息处理方法的方法流程图之四;
图8为本申请实施例提供的消息订阅方法的方法流程图之一;
图9为本申请实施例提供的消息订阅方法的方法流程图之二;
图10为本申请实施例提供的消息发布装置的模块组成示意图;
图11为本申请实施例提供的消息处理装置的模块组成示意图;
图12为本申请实施例提供的消息订阅装置的模块组成示意图;
图13为本申请实施例提供的消息处理系统的结构示意图;
图14为本申请实施例提供的应用于消息处理系统的消息处理方法的方法流程图之一;
图15为本申请实施例提供的应用于消息处理系统的消息处理方法的方法流程图之二;
图16为本申请实施例提供的应用于消息处理系统的消息处理方法的方法流程图之三;
图17为本申请实施例提供的应用于消息处理系统的消息处理方法的方法流程图之四;
图18为本申请实施例提供的消息处理设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请实施例的思想在于,为消息服务节点中的消息主题虚拟出至少一个虚拟队列,这样,一个消息主题对应至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。这样,每个订阅节点都可以从任意的虚拟队列中订阅消息。基于此思想,本申请实施例提供了一种消息发布、处理、订阅方法、装置及系统。
图1为本申请实施例,在消息服务节点为消息主题虚拟出的虚拟队列的示意图,在图1中,该消息主题对应至少一个虚拟队列,每个虚拟队列都可以存储消息。这样,可以将该消息主题的消息发布在至少一个虚拟队列中,订阅节点在订阅消息时,可以从至少一个虚拟队列中获取消息。
当然,一个消息主题对应至少一个虚拟队列,上述虚拟队列可以理解为该消息主题所对应消息队列的消息子队列。
另外,在本申请实施例中所提及到的,发布节点可以为消息发布客户端,订阅节点可以为消息订阅客户端,消息服务节点可以为消息服务器,具体的可以为消息中间件服务器。本申请实施例中所提及到的消息主题,也可以称为Topic,指的是消息的最小划分单元。
下述将一一介绍本申请实施例提供的消息发布、处理、订阅方法、装置及系统。
实施例1
本申请实施例提供了一种消息发布方法,该方法可以应用于发布节点,用于将待发布消息发布至消息服务节点。
图2为本申请实施例提供的消息发布方法的方法流程图之一,图2所示的方法,至少包括如下步骤:
步骤102,确定待发布消息所属的消息主题;以及,确定待发布消息在上述消息主题中所对应的虚拟队列;
其中,在步骤102中,可以根据待发布消息的具体内容确定其所属的消息主题。具体的,可以通过对待发布消息进行语义分析确定待发布消息所属的消息主题。
步骤104,向消息服务节点发送消息发布请求;在消息服务节点中,消息主题对应至少一个虚拟队列;
其中,该消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号,以使消息服务节点将待发布消息发布至该消息主题中与上述虚拟队列序号对应的虚拟队列。
为了实现待发布消息的有序发布,在本申请实施例中,消息主题所对应的至少一个虚拟队列中的每个虚拟队列包括两种状态:锁定状态和无锁状态。
一般的,若是某个订阅节点从某个虚拟队列中获取消息时,该虚拟队列的状态会被标记为锁定状态,这时,其他订阅节点无法从该虚拟队列获取消息。若是当前未存在订阅节点从该虚拟队列获取消息,则该虚拟队列当前的状态被标记为无锁状态,这时,订阅节点可以从该虚拟队列中获取消息。
上述携带在消息发布请求中的待发布消息所属的消息主题可以为消息主题标识,具体的可以为消息主题的名称、编号等信息。另外,在本申请实施例中,可以为消息服务节点上的每个消息主题所对应的虚拟队列设置序号,例如,消息服务节点上的消息主题所对应的虚拟队列可以标记为虚拟队列1、虚拟队列2、…、虚拟队列P,其中,P为正整数,1、2、…、P则为虚拟队列的序号。其中,每个消息主题所对应的虚拟队列都可以使用相同的序号进行标记,但是,每个消息主题所对应的虚拟队列的数目可以不相同。
当消息服务节点接收到发布节点发送的消息发布请求后,根据该消息发布请求中携带的虚拟队列序号,在待发布消息所属的消息主题中查找到该虚拟队列序号所对应的虚拟队列,并将待发布消息发布至该虚拟队列。
具体的,在上述步骤102中,确定待发布消息在消息主题中所对应的虚拟队列,包括如下步骤一和步骤二:
步骤一,获取待发布消息的消息主键;其中,该消息主键包括待发布消息中的指定字符串。
在本申请实施例中,可以指定待发布消息中的任意字符串作为待发布消息的消息主键;当然,上述消息主键除了为指定字符串,还可以为其它形式。
步骤二,根据上述消息主键和预先设置的规则,确定待发布消息在上述消息主题中所对应的虚拟队列。
其中,步骤二中所提到的消息主题为待发布消息所属的消息主题。
在具体实施时,上述步骤二中,根据消息主键和预先设置的规则,确定待发布消息在消息主题中所对应的虚拟队列,具体包括:
将上述指定字符串转化为与其对应的数值;将上述数值与待发布消息所属消息主题所对应的虚拟队列的数目相除取余数;根据得到的余数确定待发布消息在上述消息主题中所对应的虚拟队列。
其中,在本申请实施例中,可以通过哈希算法将上述指定字符串转化为数值。当然,除了将待发布消息的指定字符串转化为数值外,还可以转换为整数型数据或者Long型数据等其他形式。
另外,由于不同的消息主题所对应的虚拟队列的数目可能并不相同,因此,在计算余数时,需要使用待发布消息所属的消息主题所对应的虚拟队列的数目。
为便于理解上述过程,下述将举例进行说明。
例如,将待发布消息的指定字符串经过哈希算法转化后得到的数值为107,而待发布消息所属的消息主题对应的虚拟队列的数目为100,使用107除以100,余数为7。
其中,上述根据得到的余数确定待发布消息所对应的虚拟队列,其具体实现过程可以为:将上述余数确定为待发布消息在上述消息主题中所对应的虚拟队列的序号;其中,在消息服务节点中,消息主题所对应的虚拟队列均设置有序号。
继续沿用上例,在上述举例中,计算得到的余数为7,则将待发布消息所属的消息主题中序号为7的虚拟队列确定为待发布消息所对应的虚拟队列。
当然,上述直接将余数确定为虚拟队列的序号,除此之外,还可以通过其他方式确定待发布消息所对应的虚拟队列,此处不再一一赘述。
另外,本申请实施例提供的方法应用于分布式系统。
本申请实施例提供的消息发布方法,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
实施例2
对应于本申请实施例1所提供的消息发布方法,本申请实施例提供了一种消息处理方法,该方法可以应用于消息服务节点。图3为本申请实施例提供的消息处理方法的方法流程图之一,图3所示的方法,至少包括如下步骤:
步骤202,消息服务节点接收发布节点发送的消息发布请求;其中,该消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号;上述待发布消息所属的消息主题对应至少一个虚拟队列。
其中,上述携带在消息发布请求中的待发布消息所属的消息主题可以为消息主题的标识,具体的,可以为消息主题的名称、编号等。
步骤204,消息服务节点将待发布消息发布至该消息主题中与虚拟队列序号对应的虚拟队列。
其中,在步骤204中,当消息服务节点接收到发布节点发送的消息发布请求后,根据该消息发布请求中携带的虚拟队列序号,在上述消息主题中查找到对应的虚拟队列,并将待发布消息发布至该虚拟队列。
为了便于理解本申请实施例提供的消息发布方法,下述介绍通过发布节点和消息服务节点之间进行交互为例,介绍本申请实施例提供的消息处理方法。图4为本申请实施例提供的消息处理方法的方法流程图之二,图4所示的方法至少包括如下步骤:
步骤302,发布节点确定待发布消息所属的消息主题。
具体的,发布节点可以通过语义分析的方法确定待发布消息所属的消息主题。
步骤304,发布节点将待发布消息的消息主键转化为数值。
其中,在步骤304中,待发布消息的消息主键为字符串的形式,例如,为001、010等这种形式。在本申请实施例中,可以通过哈希算法将待发布消息的消息主键转换为数值。
步骤306,发布节点将上述数值与待发布消息所属消息主题所对应的虚拟队列的数目相除取余数。
步骤308,发布节点将上述余数确定为待发布消息所对应的虚拟队列的序号。
例如,上述余数为7,则待发布消息所对应的虚拟队列的序号为7,即需要将待发布消息发布至其所属的消息主题中序号为7的虚拟队列中。
步骤310,发布节点向消息服务节点发送消息发布请求;其中,该消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号。
步骤312,消息服务节点接收到上述消息发布请求后,将待发布消息发布至上述消息主题中与虚拟队列序号对应的虚拟队列。
其中,图4所对应实施例中各个步骤的具体实现过程可参考图2、图3所对应实施例,此处不再赘述。
在本申请实施例中,消息服务节点既可以进行消息的发布,还可以向订阅节点推送消息。当有订阅节点向消息服务节点发送消息订阅请求后,消息服务节点可以通过执行如下步骤向订阅节点推送消息,如图5所示。
步骤402,消息服务节点接收订阅节点发送的消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识。
其中,上述订阅消息主题标识可以为消息主题的编号、消息主题的名称等。
步骤404,消息服务节点确定上述订阅消息主题标识所对应的订阅消息主题。
步骤406,消息服务节点确定推送给上述订阅节点的订阅消息的数量,并根据该订阅消息的数量通过订阅消息主题所对应的虚拟队列将订阅消息推送给上述订阅节点。
由于不同的订阅节点配置不同,从而导致不同的订阅节点消费消息的能力不同。因此,针对不同的订阅节点,向其推送的消息数量也会有所差异。因此,为了实现向订阅节点所推送的消息不超过其消费消息的能力。在本申请实施例中,上述消息订阅请求中携带有订阅节点标识;
相应的,上述步骤406中,确定向上述订阅节点推送消息的消息数量,可以包括如下步骤(1)和步骤(2):
步骤(1)、消息服务节点根据所述订阅节点标识,从预先存储的各个订阅节点所对应的消息分配比例中确定所述订阅节点所对应的消息分配比例;
步骤(2)、消息服务节点根据所述订阅节点所对应的消息分配比例、所述订阅消息主题所对应的虚拟队列的数目,确定推送给上述订阅节点推送的订阅消息的数量;其中,通过一个虚拟队列向订阅节点推送一个消息。
具体的,可以在消息服务节点上维护有各个订阅节点标识与对应的消息分配比例的映射关系,该映射关系可以为表格,一种可能的形式如表1所示。
表1
订阅节点标识 | 消息分配比例 |
标识1 | 10% |
标识2 | 9% |
标识3 | 12% |
其中,表1只是示例性说明,并不构成对本申请实施例中消息分配比例的具体数值、订阅节点的数量的限定。
上述订阅节点标识可以为订阅节点的互联网协议地址(Internet ProtocolAddress,IP)。
在上述步骤(1)中,消息服务节点在接收到订阅节点发送的消息订阅请求后,将该消息订阅请求中携带的订阅节点标识与预先存储的各个订阅节点的标识进行匹配,将相匹配的标识所对应的消息分配比例确定为该订阅节点所对应的消息分配比例。
其中,若是上述订阅节点标识为订阅节点的IP地址,可以是将与该IP地址相同的IP地址所对应的消息分配比例作为该订阅节点所对应的消息分配比例。
另外,在上述步骤(2)中,将订阅节点所对应的消息分配比例与订阅消息主题所对应的虚拟队列的数目的乘积,作为推送给该订阅节点的订阅消息的数量。由于,通过一个虚拟队列向订阅节点推送一条订阅消息,因此,上述消息数量还可以理解为向订阅节点推送订阅消息的虚拟队列的数量。例如,向订阅节点推送100条消息,则需要通过该订阅消息主题中的100个虚拟队列向订阅节点推送消息。
为便于理解上述过程,下述将举例进行说明。
例如,订阅节点1向消息服务节点发送消息订阅请求,该消息订阅请求中携带有订阅消息主题标识和订阅节点1的IP地址,将订阅节点1的IP地址记为IP地址1,当消息服务节点接收到订阅节点1发送的消息订阅请求后,确定IP地址1所对应的消息分配比例,将该消息分配比例确定为订阅节点1所对应的消息分配比例,例如,该消息分配比例为10%。并确定上述订阅消息主题标识所对应的订阅消息主题,若是该订阅消息主题对应10000个虚拟队列,则将10000*10%=1000作为配置给订阅节点1的订阅消息的数量,并通过该订阅消息主题中的1000个虚拟队列向订阅节点1发送订阅消息。
在本申请实施例中,当确定出推送给订阅节点的订阅消息的数量后,则根据该订阅消息的数量通过订阅消息主题所对应的虚拟队列将订阅消息推送给上述订阅节点。具体的,消息服务节点向订阅节点推送的消息的数量可以小于或等于该订阅消息的数量,一般情况下不会超过该订阅消息的数量。
在一种具体实施方式中,本申请实施例中的消息主题所对应的虚拟队列包括两种状态:锁定状态和无锁状态;
相应的,上述根据上述订阅消息的数量通过上述订阅消息主题所对应的虚拟队列将上述订阅消息推送给上述订阅节点,包括如下过程:
消息服务节点确定上述消息主题中当前处于无锁状态的虚拟队列的数目;消息服务节点判断上述订阅消息的数量是否大于或等于上述处于无锁状态的虚拟队列的数目;若是,则通过上述处于无锁状态的虚拟队列向上述订阅节点推送与上述处于无锁状态的虚拟队列的数目相同数量的消息;否则,将通过上述处于无锁状态的虚拟队列中与上述订阅消息的数量相同数目个任意虚拟队列向上述订阅节点推送上述数量个消息。
具体的,当虚拟队列处于无锁状态时,才可以向订阅节点推送消息。
因此,在一种具体实施例中,若是订阅消息主题中当前处于无锁状态下的虚拟队列的数量小于推送给订阅节点的订阅消息的数量,则向订阅节点推送处于无锁状态下的虚拟队列的数量个订阅消息即可。
例如,确定的推送给订阅节点的订阅消息的数量为1000,但是,该订阅消息主题当前处于无锁状态的虚拟队列的数目为500,由于通过一个虚拟队列在同一时刻只能向一个订阅节点推送消息,因此,在该种情况下,通过上述500各虚拟队列向订阅节点推送500个订阅消息即可。
在本申请实施例中,为消息服务节点上的消息主题虚拟出的虚拟队列包括锁定状态和无锁状态两种状态,这样,当消息服务节点通过虚拟队列在向订阅节点推送消息时,若是通过某个虚拟队列推送消息时,该虚拟队列会被锁定,无法再为其它订阅节点推送消息。这样,消息服务节点可以通过其它消息队列向订阅节点推送消息。这样使得消息的订阅可以有序、高效的进行。
另外,在本说明书实施例中,消息服务节点确定的推送给订阅节点的订阅消息的数量只是具体推送消息时的一个参考值,消息服务节点在向订阅节点推送消息时,还需要考虑订阅消息主题所对应的虚拟队列中处于无锁状态的虚拟队列的数目,以及同时接收到的请求相同订阅消息主题的订阅节点的数目等信息。
另外,在本说明书实施例,由消息服务节点确定推送给订阅节点的订阅消息的数量,可以减少订阅节点的工作量。
上述过程详细介绍了由消息服务节点确定推送给订阅节点的订阅消息的数量这种情况,除此之外,还可以是由订阅节点确定其需要获取的订阅消息的数量,并由消息服务节点根据该订阅消息的数量向订阅节点推送消息。针对该种情况,在消息服务节点具体可以通过如下过程实现:
接收订阅节点发送的消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识和订阅消息的数量;确定订阅消息主题标识所对应的订阅消息主题,并根据上述订阅消息的数量通过上述订阅消息主题所对应的虚拟队列将订阅消息推送给该订阅节点。
在该种情况下,则是由订阅节点根据自身的消息分配比例以及订阅消息主题中虚拟队列的数目,确定需要获取的订阅消息的数量。具体过程可参考消息服务节点确定订阅消息的数量的过程,此处不再赘述。
具体的,服务节点根据上述订阅消息的数量向订阅节点推送订阅消息的过程可以参考上述情况中的具体介绍,此处也不再赘述。
在该种情况下,由订阅节点确定需要获取的订阅消息的数量,这样,消息服务节点直接根据该订阅消息的数量向该订阅节点推送消息即可,减少了消息服务节点的工作量,缓解了消息服务节点的工作压力。
需要说明的是,在本申请实施例中,消息服务节点处理发布节点的消息发布请求,以及处理订阅节点的消息订阅请求为两个完全独立的过程,两者之间互不影响,且不具有时序限定。
为便于理解本申请实施例中订阅节点订阅消息的具体过程,下述通过订阅节点和消息服务节点交互以使订阅节点订阅消息为例,介绍本申请实施例提供的消息处理方法。
图6为本申请实施例提供的消息处理方法的方法流程图之三,图6所示的消息处理方法,至少包括如下步骤:
步骤502,订阅节点向消息服务节点发送消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识和订阅节点标识。
步骤504,消息服务节点接收到订阅节点发送的消息订阅请求后,确定订阅消息主题标识所对应的订阅消息主题。
步骤506,消息服务节点根据订阅节点标识确定该订阅节点所对应的消息分配比例。
步骤508,消息服务节点计算上述订阅消息主题中的虚拟队列的数目与消息分配比例的乘积,将该乘积确定为推送给订阅节点的订阅消息的数量。
步骤510,消息服务节点判断上述订阅消息主题中当前处于无锁状态的虚拟队列的数目是否大于或等于上述订阅消息的数量;若是,则执行步骤512,否则执行步骤514。
步骤512,消息服务节点从处于无锁状态的虚拟队列中选取上述数量个虚拟队列,通过所选取的虚拟队列向订阅节点推送订阅消息。
步骤514,消息服务节点通过当前处于无锁状态的虚拟队列向订阅节点推送订阅消息,且所推送的订阅消息的数量与处于无锁状态的虚拟队列的数目相等。
步骤516,订阅节点接收消息服务节点推送的订阅消息。
其中,图6所对应实施例中,各个步骤的具体实现过程可参考实施例2中详细介绍,此处不再赘述。
具体的,在本申请实施例中,在进行消息发布时,确定待发布消息在其所属的消息主题中所对应的虚拟队列时,该步骤可以由发布节点执行,也可以由消息服务节点执行。若是由消息服务节点执行,则以发布节点和消息服务节点进行交互为例介绍。图7示出了本申请实施例提供的消息处理方法的方法流程图之四,图7所示的方法,至少包括如下步骤:
步骤602,发布节点确定待发布消息所属的消息主题。
步骤604,发布节点向消息服务节点发送消息发布请求;其中,该消息发布请求中携带有待发布消息和待发布消息所属的消息主题。
步骤606,消息服务节点在接收到发布节点发送的消息发布请求后,将待发布消息的消息主键转化为数值。
步骤608,消息服务节点将上述数值与待发布消息所属消息主题所对应的虚拟队列的数目相除取余数。
步骤610,消息服务节点将上述余数确定为待发布消息所对应的虚拟队列的序号。
步骤612,消息服务节点将待发布消息发布至上述消息主题中与虚拟队列序号对应的虚拟队列中。
其中,图7所对应实施例中各个步骤的具体实现过程可参考图2、图3所对应实施例,此处不再赘述。
本申请实施例提供的消息处理方法,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
实施例3
在本申请实施例中,订阅节点在从消息服务节点订阅消息时,可以是由订阅节点确定需要获取订阅消息的消息数量,也可以是由消息服务节点确定需要获取的订阅消息的数量。图8为本申请实施例提供的消息订阅方法的方法流程图之一,图8所示的方法针对的是由订阅节点确定订阅消息的数量这种情况,该方法可以应用于订阅节点,图8所示的方法,至少包括如下步骤:
步骤702,根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量;其中,在上述消息服务节点中,上述消息主题对应至少一个虚拟队列。
其中,在步骤702中,根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取的订阅消息的数量,包括:
计算上述订阅消息主题所对应的虚拟队列的数目和消息分配比例的乘积;将上述乘积确定为从消息服务节点获取订阅消息的数量。
具体的,上述消息分配比例存储在该订阅节点中。
另外,在上述步骤702中,可以是在订阅节点中预先存储有各个消息主题所对应的虚拟队列的数目,这样,每次计算从消息服务节点获取订阅消息的数量时,直接从订阅节点读取订阅消息主题所对应的虚拟队列的数目即可;除此之外,还可以每次在计算从消息服务节点获取订阅消息的数量时,从消息服务节点获取该订阅消息主题所对应的虚拟队列的数目。
步骤704,向上述消息服务节点发送消息订阅请求;其中,上述消息订阅请求中携带订阅消息主题标识和订阅消息的数量,以使上述消息服务节点根据上述订阅消息的数量通过订阅消息主题所对应的虚拟队列将订阅消息推送给上述订阅节点。
步骤706,接收上述消息服务节点发送的订阅消息。
本申请实施例中,上述各个步骤的具体实现过程在实施例2、实施例中已经进行详细介绍,因此,上述各个步骤的具体实现过程可参考实施例2,此处不再赘述。
为便于理解本申请实施例提供的消息订阅方法,下述将通过订阅节点和消息服务节点交互的方式介绍本申请实施例提供的消息订阅方法。图9示出了本申请实施例提供的消息订阅方法的方法流程图之二,图9所示的方法至少包括如下步骤:
步骤802,订阅节点获取订阅消息主题所对应的虚拟队列的数目,以及获取自身所对应的消息分配比例。
步骤804,订阅节点计算上述虚拟队列的数目与消息分配比例的乘积。
步骤806,订阅节点将上述乘积确定为从消息服务节点获取订阅消息的数量。
步骤808,订阅节点向消息服务节点发送消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识和订阅消息的数量。
步骤810,消息服务节点接收到订阅节点发送的消息订阅请求后,判断上述订阅消息主题中当前处于无锁状态的虚拟队列的数目是否大于或等于上述订阅消息的数量;若是,则执行步骤812,否则执行步骤814。
步骤812,消息服务节点从处于无锁状态的虚拟队列中选取上述数量个虚拟队列,通过所选取的虚拟队列向订阅节点推送订阅消息。
步骤814,消息服务节点通过当前处于无锁状态的虚拟队列向订阅节点推送订阅消息,且所推送的订阅消息数量与处于无锁状态的虚拟队列的数目相等。
步骤816,订阅节点接收消息服务节点推送的订阅消息。
本申请实施例提供的消息订阅方法,在消息服务节点中,消息主题对应至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
实施例4
本申请实施例提供了一种消息发布装置,用于执行本申请实施例所提供的消息发布方法,该消息发布装置可以应用于消息发布节点,该装置包括非暂态存储介质,非暂态存储介质存储有指令集,该指令集在被处理器执行时可实现本申请实施例1所提供的消息发布方法中任一所述的方法。
具体的,图10为本申请实施例提供的消息发布装置的模块组成示意图,图10所示的消息发布装置,包括:第一消息主题确定模块901、第一队列确定模块902和第一发送模块903;
第一消息主题确定模块901,用于确定待发布消息所属的消息主题;
第一队列确定模块902,用于确定待发布消息在消息主题中所对应的虚拟队列;
第一发送模块903,用于向消息服务节点发送消息发布请求;在消息服务节点中,消息主题对应至少一个虚拟队列;其中,消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号,以使消息服务节点将待发布消息发布至消息主题中与虚拟队列序号对应的虚拟队列。
可选的,每个虚拟队列包括两种状态:锁定状态和无锁状态。
可选的,第一队列确定模块902,具体用于:
获取待发布消息的消息主键;其中,消息主键包括待发布消息中的指定字符串;根据消息主键和预先设置的规则,确定待发布消息在消息主题中所对应的虚拟队列。
可选的,第一队列确定模块902,还具体用于:
将指定字符串转化为与其对应的数值;将数值与待发布消息所属消息主题所对应的虚拟队列的数目相除取余数;根据得到的余数确定待发布消息在消息主题中所对应的虚拟队列。
可选的,第一队列确定模块902,还具体用于:
将余数确定为待发布消息在消息主题中所对应的虚拟队列的序号;其中,在消息服务节点中,消息主题所对应的虚拟队列均设置有序号。
可选的,本申请实施例提供的消息发布装置应用于分布式系统。
本申请实施例所提供的消息发布装置中各个模块所对应功能的具体实现过程与本申请实施例1所提供消息发布方法中各个步骤的具体实现过程相同,因此,各个模块所对应功能的具体实现过程可参考实施例1,此处不再赘述。
本申请实施例提供的消息发布装置,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
实施例5
本申请实施例提供了一种消息处理装置,该装置用于执行本申请实施例所提供的消息处理方法,该方法可以应用于消息服务节点,该装置包括非暂态存储介质,非暂态存储介质存储有指令集,该指令集被处理器执行时可实现本申请实施例2所提供的消息处理方法中任一项所述的方法。
具体的,图11为本申请实施例提供的消息处理装置的模块组成示意图,图11所示的装置包括:第一发布请求接收模块1001和第一发布模块1002;
其中,第一发布请求接收模块1001,用于接收发布节点发送的消息发布请求;其中,消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号;待发布消息所属的消息主题对应至少一个虚拟队列;
第一发布模块1002,用于将待发布消息发布至消息主题中与虚拟队列序号对应的虚拟队列。
可选的,本申请实施例提供的消息处理装置,还包括:
第一订阅请求接收模块,用于接收订阅节点发送的消息订阅请求;其中,消息订阅请求中携带有订阅消息主题标识;
第二消息主题确定模块,用于确定订阅消息主题标识所对应的消息主题;
第一数量确定模块,用于确定推送给所述订阅节点的订阅消息的数量;
第一推送模块,用于根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
可选的,消息订阅请求中携带有订阅节点标识;
相应的,第一数量确定模块,具体用于:
根据订阅节点标识,从预先存储的各个订阅节点所对应的消息分配比例中确定订阅节点所对应的消息分配比例;根据所述订阅节点所对应的消息分配比例、所述订阅消息主题所对应的虚拟队列的数目,确定推送给所述订阅节点的订阅消息的数量;其中,通过一个虚拟队列向所述订阅节点推送一个订阅消息。
可选的,本申请实施例提供的装置还包括:
第二订阅请求接收模块,用于接收订阅节点发送的消息订阅请求;其中,所述消息订阅请求中携带有订阅消息主题标识和订阅消息的数量;
第四消息主题确定模块,用于确定所述订阅消息主题标识所对应的订阅消息主题;
第二推送模块,用于根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
可选的,每个虚拟队列包括:锁定状态和无锁状态;
第一推送模块或第二推送模块,具体用于:
确定所述消息主题中当前处于无锁状态的虚拟队列的数目;判断所述订阅消息的数量是否大于或等于所述处于无锁状态的虚拟队列的数目;若是,则通过所述处于无锁状态的虚拟队列向所述订阅节点推送与所述处于无锁状态的虚拟队列的数目相同数量的消息;否则,将通过所述处于无锁状态的虚拟队列中与所述订阅消息的数量相同数目个任意虚拟队列向所述订阅节点推送所述数量个消息。
本申请实施例提供的消息处理装置,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
实施例6
本申请实施例提供了一种消息订阅装置,用于执行本申请实施例所提供的消息订阅方法,该消息订阅装置可以应用于订阅节点,该装置包括非暂态存储介质,非暂态存储介质存储有指令集,该指令集被处理器执行时可以实现本申请实施例所提供的消息订阅方法中任一项所述的方法。
具体的,图12为本申请实施例提供的消息订阅装置的模块组成示意图,图12所示的装置,包括:第二数量确定模块1101、第二发送模块1102和消息接收模块1103;
其中,第二数量确定模块1101,用于根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量;其中,在所述消息服务节点中,所述消息主题对应至少一个虚拟队列;
第二发送模块1102,用于向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带订阅消息主题标识和所述订阅消息的数量,以使所述消息服务节点根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点;
消息接收模块1103,用于接收服务节点发送的订阅消息。
可选的,第二数量确定模块1101,具体用于:
计算所述订阅消息主题所对应的虚拟队列的数目和所述消息分配比例的乘积;将所述乘积确定为从消息服务节点获取订阅消息的数量。
本申请实施例所提供的消息订阅装置中各个模块的具体功能与本申请实施例3所提供的消息订阅方法中各个步骤的具体实现过程相同,因此,本申请实施例中各个模块的具体功能可参考实施例3,此处不再赘述。
本申请实施例提供的消息订阅装置,在消息服务节点中,消息主题对应至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
实施例7
本申请实施例提供了一种消息处理系统,图13示出了本申请实施例提供的消息处理系统的结构示意图,图13所示的消息处理系统包括消息服务节点1201、至少一个发布节点1202和至少一个订阅节点1203;
发布节点1202,用于确定待发布消息所属的消息主题;以及,确定待发布消息在消息主题中所对应的虚拟队列,并向消息服务节点发送消息发布请求;其中,在消息服务节点中,消息主题对应至少一个虚拟队列;消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号;
订阅节点1203,用于向消息服务节点发送消息订阅请求;其中,消息订阅请求中携带有订阅消息主题标识;以及,还用于接收消息服务节点推送的订阅消息;
消息服务节点1201,用于接收发布节点发送的消息发布请求,并将待发布消息发布至消息主题中与虚拟队列序号对应的虚拟队列;以及,用于接收所述订阅节点发送的消息订阅请求,确定所述订阅消息主题标识所对应的订阅消息主题,并确定推送给所述订阅节点的订阅消息的数量,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
另外,本申请实施例中,当其中某个订阅节点在订阅消息的过程中发生宕机时,可以将该订阅节点订阅消息的任务转移给其它订阅节点,由其他订阅节点执行。
可选的,每个虚拟队列包括两种状态:锁定状态和无锁状态。
可选的,发布节点1202,具体用于:
获取待发布消息的消息主键;其中,消息主键包括待发布消息中的指定字符串;根据消息主键和预先设置的规则,确定待发布消息在消息主题中所对应的虚拟队列。
可选的,发布节点1202,还具体用于:
将执行字符串转化为与其对应的数值;将数值与待发布消息所属消息主题所对应的虚拟队列的数目相除取余数;根据得到的余数确定待发布消息在消息主题中所对应的虚拟队列。
可选的,发布节点1202,还具体用于:
将余数确定为待发布消息在消息主题中所对应的虚拟队列的序号;其中,在消息服务节点中,消息主题所对应的虚拟队列均设置有序号。
可选的,消息订阅请求中携带有订阅节点标识;
消息服务节点1201,具体用于:
根据所述订阅节点标识,从预先存储的各个订阅节点所对应的消息分配比例中确定所述订阅节点所对应的消息分配比例;根据所述订阅节点所对应的消息分配比例、所述订阅消息主题所对应的虚拟队列的数目,确定推送给所述订阅节点的订阅消息的数量;其中,通过一个虚拟队列向所述订阅节点推送一个订阅消息。
可选的,所述虚拟队列包括两种状态:锁定状态和无锁状态;
所述消息服务节点,具体用于:
确定所述消息主题中当前处于无锁状态的虚拟队列的数目;判断所述订阅消息的数量是否大于或等于所述处于无锁状态的虚拟队列的数目;若是,则通过所述处于无锁状态的虚拟队列向所述订阅节点推送与所述处于无锁状态的虚拟队列的数目相同数量的消息;否则,将通过所述处于无锁状态的虚拟队列中与所述订阅消息的数量相同数目个任意虚拟队列向所述订阅节点推送所述数量个消息。
为便于理解本申请实施例提供的消息处理系统,下述将结合本申请实施例提供的消息处理系统,介绍应用于该消息处理系统的消息处理方法的方法流程图之一,图14示出了本申请实施例提供的应用于该消息处理系统的消息处理方法的方法流程图之一,图14所示的方法,至少包括如下步骤:
步骤1302,发布节点确定待发布消息所属的消息队列。
步骤1304,发布节点确定待发布消息在上述消息主题中所对应的虚拟队列的序号。
步骤1306,发布节点向消息服务节点发送消息发布请求;其中,该消息发布请求中携带有待发布消息、待发布消息所属消息主题以及待发布消息所对应的虚拟队列序号。
步骤1308,消息服务接收节点接收发布节点发布的消息发布请求,将待发布消息发布至上述消息主题中与虚拟队列序号对应的虚拟队列。
步骤1310,订阅节点向消息服务节点发送消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识。
步骤1312,消息服务节点接收订阅节点发送的消息发布请求,并确定上述订阅消息主题标识所对应的订阅消息主题。
步骤1314,消息服务节点确定推送给上述订阅节点的订阅消息的数量。
步骤1316,消息服务节点根据上述订阅消息的数量将订阅消息主题所对应的虚拟队列中的消息推送给上述订阅节点。
然后,订阅节点接收消息服务节点推送的消息。
另外的,上述确定待发布消息在其所属的消息主题中所对应的虚拟队列还可以由消息服务节点执行,相应的,针对该种情况:
上述发布节点1202,用于向消息服务节点发送消息发布请求;其中,上述消息发布请求中携带有待发布消息和上述待发布消息所属的消息主题;在上述消息服务节点,上述待发布消息所属的消息主题对应至少一个虚拟队列;
上述订阅节点1203,用于向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带有订阅消息主题标识;以及,还用于接收所述消息服务节点推送的订阅消息;
上述消息服务节点1201,用于确定上述待发布消息在上述消息主题中所对应的虚拟队列,并将上述待发布消息发布至所确定的上述虚拟队列;以及,用于接收所述订阅节点发送的消息订阅请求,确定所述订阅消息主题标识所对应的订阅消息主题,并确定推送给所述订阅节点的订阅消息的数量,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
为便于理解本申请实施例提供的消息处理系统,下述将结合本申请实施例提供的消息处理系统,介绍应用于该消息处理系统的消息处理方法的方法流程图之一,图15示出了本申请实施例提供的应用于该消息处理系统的消息处理方法的方法流程图之二,图15所示的方法,至少包括如下步骤:
步骤1402,发布节点向消息服务节点发送消息发布请求;其中,该消息发布请求中携带有待发布消息、待发布消息所属消息主题。
步骤1404,消息服务节点接收到发布节点发送的消息发布请求后,确定待发布消息在上述消息主题中所对应的虚拟队列的序号。
步骤1406,消息服务接收节点将待发布消息发布至上述消息主题中与虚拟队列序号对应的虚拟队列。
步骤1408,订阅节点向消息服务节点发送消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识。
步骤1410,消息服务节点接收订阅节点发送的消息订阅请求,并确定上述订阅消息主题标识所对应的订阅消息主题。
步骤1412,消息服务节点确定推送给上述订阅节点的订阅消息的数量。
步骤1414,消息服务节点根据上述订阅消息的数量将订阅消息主题所对应的虚拟队列中的消息推送给上述订阅节点。
具体的,确定推送给订阅节点的订阅消息的数量可以由消息服务节点执行,也可以由订阅节点执行,若是由订阅节点执行,则发布节点1202,用于确定待发布消息所属的消息队列;以及,确定上述待发布消息在上述消息主题中所对应的虚拟队列,并向上述消息服务节点发送消息发布请求;其中,在上述消息服务节点中,上述消息主题对应至少一个虚拟队列;消息发布请求中携带有待发布消息、待发布消息所属的消息主题和待发布消息所对应的虚拟队列序号;
上述订阅节点1203,用于根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量;以及,还用于向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带订阅消息主题标识和所述订阅消息的数量;
上述消息服务节点1201,用于接收上述发布节点发送的消息发布请求,并将待发布消息发布至上述消息主题中与虚拟队列序号对应的虚拟队列;以及,用于接收所述订阅节点发送的消息订阅请求,确定所述订阅消息主题标识所对应的消息主题,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
为便于理解本申请实施例提供的消息处理系统,下述将结合本申请实施例提供的消息处理系统,介绍应用于该消息处理系统的消息处理方法的方法流程图之一,图16示出了本申请实施例提供的应用于该消息处理系统的消息处理方法的方法流程图之三,图16所示的方法,至少包括如下步骤:
步骤1502,发布节点确定待发布消息所属的消息队列。
步骤1504,发布节点确定待发布消息在上述消息主题中所对应的虚拟队列的序号。
步骤1506,发布节点向消息服务节点发送消息发布请求;其中,该消息发布请求中携带有待发布消息、待发布消息所属消息主题以及待发布消息所对应的虚拟队列序号。
步骤1508,消息服务接收节点接收发布节点发布的消息发布请求,将待发布消息发布至上述消息主题中与虚拟队列序号所对应的虚拟队列。
步骤1510,订阅节点获取订阅消息主题所对应的虚拟队列的数目;以及,获取自身对应的消息分配比例。
步骤1512,订阅节点根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量。
步骤1514,订阅节点向消息服务节点发送消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识和所述订阅消息的数量。
步骤1516,消息服务节点根据订阅消息的数量通过订阅消息主题所对应的虚拟队列将订阅消息推送给订阅节点。
具体的,若是确定推送给订阅节点的订阅消息的数量可以由订阅节点执行,则上述发布节点1202,用于向上述消息服务节点发送消息发布请求;其中,上述消息发布请求中携带有待发布消息和待发布消息所属的消息主题;在上述消息服务节点,上述待发布消息所属的消息主题对应至少一个虚拟队列;
上述订阅节点1203,用于根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量;以及,还用于向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带订阅消息主题标识和所述订阅消息的数量;
上述消息服务节点1201,用于确定待发布消息在上述消息主题中所对应的虚拟队列,并将上述待发布消息发布至所确定的虚拟队列;以及,用于接收所述订阅节点发送的消息订阅请求,确定所述订阅消息主题标识所对应的订阅消息主题,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
为便于理解本申请实施例提供的消息处理系统,下述将结合本申请实施例提供的消息处理系统,介绍应用于该消息处理系统的消息处理方法的方法流程图之一,图17示出了本申请实施例提供的应用于该消息处理系统的消息处理方法的方法流程图之四,图17所示的方法,至少包括如下步骤:
步骤1602,发布节点向消息服务节点发送消息发布请求;其中,该消息发布请求中携带有待发布消息、待发布消息所属消息主题。
步骤1604,消息服务节点接收到发布节点发送的消息发布请求后,确定待发布消息在上述消息主题中所对应的虚拟队列序号。
步骤1606,消息服务节点将待发布消息发布至上述消息主题中与虚拟队列序号对应的虚拟队列。
步骤1608,订阅节点获取订阅消息主题所对应的虚拟队列的数目;以及,获取自身对应的消息分配比例。
步骤1610,订阅节点根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量。
步骤1612,订阅节点向消息服务节点发送消息订阅请求;其中,该消息订阅请求中携带有订阅消息主题标识和所述订阅消息的数量。
步骤1614,消息服务节点根据订阅消息的数量通过订阅消息主题所对应的虚拟队列将订阅消息推送给订阅节点。
本申请实施例提供的消息处理服务器,包括消息服务节点、至少一个发布节点和至少一个订阅节点,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储发布节点发送的属于该消息主题的消息,即可以将消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
进一步地,基于本申请实施例1提供的消息发布方法,本申请实施例还提供了一种消息发布设备,如图18所示。
消息发布设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器1701和存储器1702,存储器1702中可以存储有一个或一个以上存储应用程序或数据。其中,存储器1702可以是短暂存储或持久存储。存储在存储器1702的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对消息发布设备中的一系列计算机可执行指令。更进一步地,处理器1701可以设置为与存储器1702通信,在消息发布设备上执行存储器1702中的一系列计算机可执行指令。消息发布设备还可以包括一个或一个以上电源1703,一个或一个以上有线或无线网络接口1704,一个或一个以上输入输出接口1705,一个或一个以上键盘1706等。
在一个具体的实施例中,消息发布设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对消息发布设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行计算机可执行指令,该计算机可执行指令在被执行时,可实现上述实施例1所对应的消息发布方法。
本申请实施例提供的消息发布设备,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
进一步地,基于上述实施例2的方法,本申请实施例还提供了一种消息处理设备,该消息处理设备与上述消息发布设备的结构相同,因此此处不再赘述。
在一个具体的实施例中,消息处理设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对消息处理设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行计算机可执行指令,该计算机可执行指令在被执行时,可实现本申请实施例2所提供的消息处理方法。
本申请实施例提供的消息处理设备,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,即可以将该消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
进一步地,基于上述实施例3的方法,本申请实施例还提供了一种消息订阅设备,该消息处理设备与上述消息发布设备的结构相同,因此此处不再赘述。
在一个具体的实施例中,消息订阅设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对消息订阅设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行计算机可执行指令,该计算机可执行指令在被执行时,可实现上述实施例3所对应的消息订阅方法。
本申请实施例提供的消息订阅设备,在消息服务节点中,消息主题对应至少一个虚拟队列,每个虚拟队列都可以存储属于该消息主题的消息,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
进一步地,本申请实施例还提供了一种存储介质,用于存储计算机可执行指令,一种具体的实施例中,该存储介质可以为U盘、光盘、硬盘等,该存储介质存储的计算机可执行指令在被处理器执行时,能实现本申请实施例1所提供的消息发布方法;或者,该存储介质存储的计算机可执行指令在被处理器执行时,能实现本申请实施例2所提供的消息处理方法;或者,该存储介质存储的计算机可执行指令在被处理器执行时,能实现本申请实施例3所提供的消息订阅方法。
本申请实施例提供的存储介质存储的计算机可执行指令在被处理器执行时,在消息服务节点中,为每个消息主题虚拟出至少一个虚拟队列,每个虚拟队列都可以存储发布节点发送的属于该消息主题的消息,即可以将消息主题的消息发布在至少一个虚拟队列中。并且,每个订阅节点都可以从任意的虚拟队列中订阅消息,因此,存在多个订阅者同时订阅同一消息主题的消息时,可以通过至少一个虚拟队列同时向订阅节点推送订阅消息,提高了消息订阅的并发度,可以减少排队等候的时间,订阅消息耗时少。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (17)
1.一种消息发布方法,所述方法包括:
确定待发布消息所属的消息主题;以及,确定所述待发布消息在所述消息主题中所对应的虚拟队列;
向消息服务节点发送消息发布请求;在所述消息服务节点中,所述消息主题对应至少一个虚拟队列;
其中,所述消息发布请求中携带有所述待发布消息、所述待发布消息所属的消息主题和所述待发布消息所对应的虚拟队列序号,以使所述消息服务节点将所述待发布消息发布至所述消息主题中与所述虚拟队列序号对应的虚拟队列。
2.如权利要求1所述的方法,每个所述虚拟队列包括两种状态:
锁定状态和无锁状态。
3.如权利要求1或2所述的方法,所述确定所述待发布消息在所述消息主题中所对应的虚拟队列,包括:
获取待发布消息的消息主键;其中,所述消息主键包括所述待发布消息中的指定字符串;
根据所述消息主键和预先设置的规则,确定所述待发布消息在所述消息主题中所对应的虚拟队列。
4.如权利要求3所述的方法,所述根据所述消息主键和预先设置的规则,确定所述待发布消息所对应的虚拟队列,包括:
将所述指定字符串转化为与其对应的数值;
将所述数值与所述待发布消息所属消息主题所对应的虚拟队列的数目相除取余数;
根据得到的余数确定所述待发布消息在所述消息主题中所对应的虚拟队列。
5.如权利要求4所述的方法,所述根据得到的余数确定所述待发布消息在所述消息主题中所对应的虚拟队列,包括:
将所述余数确定为所述待发布消息在所述消息主题中所对应的虚拟队列的序号;其中,在所述消息服务节点中,所述消息主题所对应的虚拟队列均设置有序号。
6.如权利要求1或2所述的方法,其中,所述方法应用于分布式系统。
7.一种消息处理方法,所述方法包括:
消息服务节点接收发布节点发送的消息发布请求;其中,所述消息发布请求中携带有待发布消息、所述待发布消息所属的消息主题和所述待发布消息所对应的虚拟队列序号;所述待发布消息所属的消息主题对应至少一个虚拟队列;
所述消息服务节点将所述待发布消息发布至所述消息主题中与所述虚拟队列序号对应的虚拟队列。
8.如权利要求7所述的方法,所述方法还包括:
所述消息服务节点接收订阅节点发送的消息订阅请求;其中,所述消息订阅请求中携带有订阅消息主题标识;
所述消息服务节点确定所述订阅消息主题标识所对应的订阅消息主题;
所述消息服务节点确定推送给所述订阅节点的订阅消息的数量,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
9.如权利要求8所述的方法,所述消息订阅请求中携带有订阅节点标识;
所述消息服务节点所述确定推送给所述订阅节点的订阅消息的数量,包括:
所述消息服务节点根据所述订阅节点标识,从预先存储的各个订阅节点所对应的消息分配比例中确定所述订阅节点所对应的消息分配比例;
所述消息服务节点根据所述订阅节点所对应的消息分配比例、所述订阅消息主题所对应的虚拟队列的数目,确定推送给所述订阅节点的订阅消息的数量;其中,通过一个虚拟队列向所述订阅节点推送一个订阅消息。
10.如权利要求7所述的方法,所述方法还包括:
所述消息服务节点接收订阅节点发送的消息订阅请求;其中,所述消息订阅请求中携带有订阅消息主题标识和订阅消息的数量;
所述消息服务节点确定所述订阅消息主题标识所对应的订阅消息主题,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
11.如权利要求8或10所述的方法,所述虚拟队列包括两种状态:锁定状态和无锁状态;
所述消息服务节点根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点,包括:
所述消息服务节点确定所述消息主题中当前处于无锁状态的虚拟队列的数目;
所述消息服务节点判断所述订阅消息的数量是否大于或等于所述处于无锁状态的虚拟队列的数目;
若是,则所述消息服务节点通过所述处于无锁状态的虚拟队列向所述订阅节点推送与所述处于无锁状态的虚拟队列的数目相同数量的消息;否则,所述消息服务节点将通过所述处于无锁状态的虚拟队列中与所述订阅消息的数量相同数目个任意虚拟队列向所述订阅节点推送所述数量个消息。
12.一种消息订阅方法,所述方法包括:
根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量;其中,在所述消息服务节点中,所述消息主题对应至少一个虚拟队列;
向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带订阅消息主题标识和所述订阅消息的数量,以使所述消息服务节点根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给订阅节点;
接收所述消息服务节点发送的订阅消息。
13.如权利要求12所述的方法,所述根据订阅消息主题所对应的虚拟队列的数目和自身所对应的消息分配比例,确定从消息服务节点获取订阅消息的数量,包括:
计算所述订阅消息主题所对应的虚拟队列的数目和所述消息分配比例的乘积;
将所述乘积确定为从消息服务节点获取订阅消息的数量。
14.一种消息发布装置,所述装置包括非暂态存储介质,所述非暂态存储介质存储有指令集,所述指令集被处理器执行时可以实现如权利要求1-6任一所述的方法。
15.一种消息处理装置,所述装置包括非暂态存储介质,所述非暂态存储介质存储有指令集,所述指令集被处理器执行时可以实现如权利要求7-11任一所述的方法。
16.一种消息订阅装置,所述装置包括非暂态存储介质,所述非暂态存储介质存储有指令集,所述指令集被处理器执行时可以实现如权利要求12或13所述的方法。
17.一种消息处理系统,所述系统包括消息服务节点、至少一个发布节点和至少一个订阅节点;
所述发布节点,用于确定待发布消息所属的消息主题;以及,确定所述待发布消息在所述消息主题中所对应的虚拟队列,并向所述消息服务节点发送消息发布请求;其中,在所述消息服务节点中,所述消息主题对应至少一个虚拟队列;所述消息发布请求中携带有所述待发布消息、所述待发布消息所属的消息主题和所述待发布消息所对应的虚拟队列序号;
所述订阅节点,用于向所述消息服务节点发送消息订阅请求;其中,所述消息订阅请求中携带有订阅消息主题标识;以及,还用于接收所述消息服务节点推送的订阅消息;
所述消息服务节点,用于接收所述发布节点发送的消息发布请求,并将所述待发布消息发布至所述消息主题中与所述虚拟队列序号对应的虚拟队列;以及,用于接收所述订阅节点发送的消息订阅请求,确定所述订阅消息主题标识所对应的订阅消息主题,并确定推送给所述订阅节点的订阅消息的数量,并根据所述订阅消息的数量通过所述订阅消息主题所对应的虚拟队列将所述订阅消息推送给所述订阅节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811003951.9A CN110875935B (zh) | 2018-08-30 | 2018-08-30 | 消息发布、处理、订阅方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811003951.9A CN110875935B (zh) | 2018-08-30 | 2018-08-30 | 消息发布、处理、订阅方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110875935A true CN110875935A (zh) | 2020-03-10 |
CN110875935B CN110875935B (zh) | 2023-03-24 |
Family
ID=69715246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811003951.9A Active CN110875935B (zh) | 2018-08-30 | 2018-08-30 | 消息发布、处理、订阅方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110875935B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475315A (zh) * | 2020-04-09 | 2020-07-31 | 广州华多网络科技有限公司 | 服务器及订阅通知推送控制、执行方法 |
CN111694644A (zh) * | 2020-05-15 | 2020-09-22 | 平安科技(深圳)有限公司 | 基于机器人操作系统的消息处理方法、装置及计算机设备 |
CN112448883A (zh) * | 2020-10-14 | 2021-03-05 | 苏宁云计算有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
CN113259444A (zh) * | 2021-05-20 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 虚拟服务的订阅方法、装置和存储介质及电子设备 |
CN113301558A (zh) * | 2020-06-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种消息传输方法、设备、系统及存储介质 |
CN113438281A (zh) * | 2021-06-05 | 2021-09-24 | 济南浪潮数据技术有限公司 | 一种分布式消息队列的存储方法、装置、设备及可读介质 |
CN113656683A (zh) * | 2021-07-12 | 2021-11-16 | 北京旷视科技有限公司 | 订阅数据推送方法、装置、系统、电子设备及存储介质 |
CN113905089A (zh) * | 2021-09-06 | 2022-01-07 | 浪潮软件股份有限公司 | 基于发布订阅模式的多用户消息推送方法及推送系统 |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040240458A1 (en) * | 2003-05-27 | 2004-12-02 | Sun Microsystems, Inc. | Method and system for messaging to a cluster |
US20070198629A1 (en) * | 2006-02-21 | 2007-08-23 | Nec Laboratories America, Inc. | Scalable Content Based Event Multicast Platform |
US20090193091A1 (en) * | 2008-01-25 | 2009-07-30 | International Business Machines Corporation | Message Delivery Using a Plurality of Queue Managers |
CN103227747A (zh) * | 2012-03-14 | 2013-07-31 | 微软公司 | 针对消息收发服务的高密度托管 |
CN103534988A (zh) * | 2013-06-03 | 2014-01-22 | 华为技术有限公司 | 消息发布与订阅的方法及装置 |
CN103841206A (zh) * | 2014-03-17 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种订阅和发布主题消息的方法 |
US20140172991A1 (en) * | 2012-12-14 | 2014-06-19 | International Business Machines Corporation | Low latency messaging chat server |
CN104079614A (zh) * | 2013-03-29 | 2014-10-01 | 国际商业机器公司 | 用于分布式发布订阅系统消息有序获取的方法和系统 |
CN104408132A (zh) * | 2014-11-28 | 2015-03-11 | 北京京东尚科信息技术有限公司 | 数据推送方法和系统 |
US20150120853A1 (en) * | 2013-10-29 | 2015-04-30 | Red Hat, Inc. | Parallel message processing on diverse messaging buses |
CN105593817A (zh) * | 2013-05-20 | 2016-05-18 | 派克赛泽有限责任公司 | 本地或分布式计算机系统上的柔性节点组成的方法和系统 |
CN105704168A (zh) * | 2014-11-24 | 2016-06-22 | 中国移动通信集团公司 | 一种调整物联网中的网络节点之间关系的方法和装置 |
CN106375462A (zh) * | 2016-09-13 | 2017-02-01 | 北京百度网讯科技有限公司 | 在分布式消息系统中实现消息持久化的方法及装置 |
CN106657349A (zh) * | 2016-12-29 | 2017-05-10 | 上海理想信息产业(集团)有限公司 | 一种消息订阅处理装置、系统及方法 |
WO2017079946A1 (zh) * | 2015-11-12 | 2017-05-18 | 华为技术有限公司 | 用于数字用户线初始化的方法和装置 |
CN106803841A (zh) * | 2017-02-14 | 2017-06-06 | 北京奇虎科技有限公司 | 消息队列数据的读取方法、装置及分布式数据存储系统 |
CN106878415A (zh) * | 2017-02-15 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 数据消费的负载均衡方法及装置 |
CN107197015A (zh) * | 2017-05-23 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的消息处理方法和装置 |
CN107332787A (zh) * | 2017-06-29 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种消息分发方法和装置 |
US20180039513A1 (en) * | 2016-08-02 | 2018-02-08 | Salesforce.Com, Inc. | Techniques and architectures for non-blocking parallel batching |
US20180110065A1 (en) * | 2016-10-14 | 2018-04-19 | Mediatek Inc. | Method of Handling Uplink Scheduling for Wireless Communication System |
CN108021358A (zh) * | 2017-12-15 | 2018-05-11 | 无线生活(杭州)信息科技有限公司 | 一种数据处理方法及装置 |
CN108134814A (zh) * | 2017-11-27 | 2018-06-08 | 海尔优家智能科技(北京)有限公司 | 一种业务数据处理方法及装置 |
-
2018
- 2018-08-30 CN CN201811003951.9A patent/CN110875935B/zh active Active
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040240458A1 (en) * | 2003-05-27 | 2004-12-02 | Sun Microsystems, Inc. | Method and system for messaging to a cluster |
US20070198629A1 (en) * | 2006-02-21 | 2007-08-23 | Nec Laboratories America, Inc. | Scalable Content Based Event Multicast Platform |
US20090193091A1 (en) * | 2008-01-25 | 2009-07-30 | International Business Machines Corporation | Message Delivery Using a Plurality of Queue Managers |
CN103227747A (zh) * | 2012-03-14 | 2013-07-31 | 微软公司 | 针对消息收发服务的高密度托管 |
US20140172991A1 (en) * | 2012-12-14 | 2014-06-19 | International Business Machines Corporation | Low latency messaging chat server |
CN104079614A (zh) * | 2013-03-29 | 2014-10-01 | 国际商业机器公司 | 用于分布式发布订阅系统消息有序获取的方法和系统 |
CN105593817A (zh) * | 2013-05-20 | 2016-05-18 | 派克赛泽有限责任公司 | 本地或分布式计算机系统上的柔性节点组成的方法和系统 |
CN103534988A (zh) * | 2013-06-03 | 2014-01-22 | 华为技术有限公司 | 消息发布与订阅的方法及装置 |
US20150120853A1 (en) * | 2013-10-29 | 2015-04-30 | Red Hat, Inc. | Parallel message processing on diverse messaging buses |
CN103841206A (zh) * | 2014-03-17 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种订阅和发布主题消息的方法 |
CN105704168A (zh) * | 2014-11-24 | 2016-06-22 | 中国移动通信集团公司 | 一种调整物联网中的网络节点之间关系的方法和装置 |
CN104408132A (zh) * | 2014-11-28 | 2015-03-11 | 北京京东尚科信息技术有限公司 | 数据推送方法和系统 |
WO2017079946A1 (zh) * | 2015-11-12 | 2017-05-18 | 华为技术有限公司 | 用于数字用户线初始化的方法和装置 |
US20180039513A1 (en) * | 2016-08-02 | 2018-02-08 | Salesforce.Com, Inc. | Techniques and architectures for non-blocking parallel batching |
CN106375462A (zh) * | 2016-09-13 | 2017-02-01 | 北京百度网讯科技有限公司 | 在分布式消息系统中实现消息持久化的方法及装置 |
US20180110065A1 (en) * | 2016-10-14 | 2018-04-19 | Mediatek Inc. | Method of Handling Uplink Scheduling for Wireless Communication System |
CN106657349A (zh) * | 2016-12-29 | 2017-05-10 | 上海理想信息产业(集团)有限公司 | 一种消息订阅处理装置、系统及方法 |
CN106803841A (zh) * | 2017-02-14 | 2017-06-06 | 北京奇虎科技有限公司 | 消息队列数据的读取方法、装置及分布式数据存储系统 |
CN106878415A (zh) * | 2017-02-15 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 数据消费的负载均衡方法及装置 |
CN107197015A (zh) * | 2017-05-23 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种基于消息队列系统的消息处理方法和装置 |
CN107332787A (zh) * | 2017-06-29 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种消息分发方法和装置 |
CN108134814A (zh) * | 2017-11-27 | 2018-06-08 | 海尔优家智能科技(北京)有限公司 | 一种业务数据处理方法及装置 |
CN108021358A (zh) * | 2017-12-15 | 2018-05-11 | 无线生活(杭州)信息科技有限公司 | 一种数据处理方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475315A (zh) * | 2020-04-09 | 2020-07-31 | 广州华多网络科技有限公司 | 服务器及订阅通知推送控制、执行方法 |
CN111475315B (zh) * | 2020-04-09 | 2024-04-16 | 广州方硅信息技术有限公司 | 服务器及订阅通知推送控制、执行方法 |
CN111694644A (zh) * | 2020-05-15 | 2020-09-22 | 平安科技(深圳)有限公司 | 基于机器人操作系统的消息处理方法、装置及计算机设备 |
CN113301558A (zh) * | 2020-06-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种消息传输方法、设备、系统及存储介质 |
CN112448883A (zh) * | 2020-10-14 | 2021-03-05 | 苏宁云计算有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
CN113259444A (zh) * | 2021-05-20 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 虚拟服务的订阅方法、装置和存储介质及电子设备 |
CN113259444B (zh) * | 2021-05-20 | 2022-11-04 | 腾讯科技(深圳)有限公司 | 虚拟服务的订阅方法、装置和存储介质及电子设备 |
CN113438281A (zh) * | 2021-06-05 | 2021-09-24 | 济南浪潮数据技术有限公司 | 一种分布式消息队列的存储方法、装置、设备及可读介质 |
CN113656683A (zh) * | 2021-07-12 | 2021-11-16 | 北京旷视科技有限公司 | 订阅数据推送方法、装置、系统、电子设备及存储介质 |
CN113905089A (zh) * | 2021-09-06 | 2022-01-07 | 浪潮软件股份有限公司 | 基于发布订阅模式的多用户消息推送方法及推送系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110875935B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110875935B (zh) | 消息发布、处理、订阅方法、装置及系统 | |
CN107450979B (zh) | 一种区块链共识方法及装置 | |
CN107450981B (zh) | 一种区块链共识方法及设备 | |
CN107391527B (zh) | 一种基于区块链的数据处理方法及设备 | |
CN107391526B (zh) | 一种基于区块链的数据处理方法及设备 | |
CN107577694B (zh) | 一种基于区块链的数据处理方法及设备 | |
CN109344348B (zh) | 一种资源更新方法及装置 | |
CN111767143A (zh) | 交易数据处理方法、装置、设备及系统 | |
CN109032803B (zh) | 数据处理方法和装置、客户端 | |
CN108845876B (zh) | 一种业务分配的方法及装置 | |
CN107578338B (zh) | 一种业务发布方法、装置及设备 | |
CN107528885B (zh) | 一种业务请求处理方法及装置 | |
CN110046187B (zh) | 数据处理系统、方法及装置 | |
CN109145053B (zh) | 数据处理方法和装置、客户端、服务器 | |
CN110716813A (zh) | 数据流处理方法、装置、可读存储介质及处理器 | |
CN111866169B (zh) | 一种服务更新方法及装置、系统 | |
CN112003922A (zh) | 一种数据传输方法及装置 | |
CN110955720A (zh) | 一种数据加载方法、装置及系统 | |
CN116560878B (zh) | 一种内存共享方法和相关装置 | |
CN111930530A (zh) | 一种基于物联网的设备消息处理方法、装置及介质 | |
CN110022351B (zh) | 一种业务请求的处理方法和装置 | |
CN110083602B (zh) | 一种基于hive表的数据存储及数据处理的方法及装置 | |
CN107943923B (zh) | 电报码数据库的构建方法、电报码识别方法及装置 | |
CN109634812B (zh) | Linux系统的进程CPU占用率控制方法、终端设备及存储介质 | |
CN114625410A (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 |