CN113301558B - 一种消息传输方法、设备、系统及存储介质 - Google Patents
一种消息传输方法、设备、系统及存储介质 Download PDFInfo
- Publication number
- CN113301558B CN113301558B CN202010610497.4A CN202010610497A CN113301558B CN 113301558 B CN113301558 B CN 113301558B CN 202010610497 A CN202010610497 A CN 202010610497A CN 113301558 B CN113301558 B CN 113301558B
- Authority
- CN
- China
- Prior art keywords
- message
- target
- topic
- queue
- subscriber
- 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
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/18—Processing of user or subscriber data, e.g. subscribed services, user preferences or user profiles; Transfer of user or subscriber data
- H04W8/20—Transfer of user or subscriber data
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供一种消息传输方法、设备、系统及存储介质。在本申请实施例中,可部署至少一条消息队列,且不同消息队列对应的消息主题不同,基于此,发送端可按照消息主题,将待传输消息写入对应的消息队列,无需再查找待传输消息对应的订阅端,实现发送端与传输链路的解耦,这可有效节省发送端的发送耗时。而且,基于按消息主题管理消息队列的模式,传输网络可快捷、准确地确定出待传输消息对应的目标订阅端,这可有效提高消息传输的精准度。另外,基于消息队列的共享机制,订阅端可按需从消息队列中获取消息,使得消息传输更加方便、灵活。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种消息传输方法、设备、系统及存储介质。
背景技术
目前的消息传输方案中,发送端在发送消息时,需要查询该消息对应的订阅端,在此基础上再通过路由等方式将消息推送给相关的订阅端。
这种消息传输方案下,发送端的发送耗时比较长;而且,由于订阅端关注的消息可能动态变化,导致发送端经常出现错推、漏推等问题,因此,消息推送的精准度也不够高。
发明内容
本申请的多个方面提供一种消息传输方法、设备、系统及存储介质,用以提高消息传输的效率和/或精准度。
本申请实施例提供一种消息推送系统,包括:队列子系统、分发节点和至少一个连接节点;
所述队列子系统,用于维护至少一条消息队列,所述至少一条消息队列各自承载的消息主题不同;
所述分发节点,用于确定所述至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,并将所述至少一种目标消息主题广播至所述至少一个连接节点;
所述连接节点,用于在其负载的至少一个订阅端中存在已订阅任意一种目标消息主题的目标订阅端的情况下,向所述目标订阅端提供所述目标订阅端已订阅的目标消息主题下的待传输消息。
本申请实施例提供一种消息传输系统,包括消息推送系统、至少一个发送端和至少一个订阅端;
所述发送端,用于基于消息主题与消息队列的对应关系,按照消息主题,向至少一条消息队列中写入待传输消息;
所述传输网络,用于确定所述至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题;从所述至少一个订阅端中,确定已订阅任意一种目标消息主题的目标订阅端;并向所述目标订阅端发出触发指令,所述触发指令中包含所述目标订阅端已订阅的目标消息主题;
所述目标订阅端,用于从其订阅的目标消息主题对应的消息队列中获取所需的消息。
本申请实施例还提供一种消息传输方法,包括:
获取目标消息的消息主题;
基于消息主题与消息队列的对应关系,从至少一个消息队列中,确定所述目标消息的消息主题对应的目标消息队列;
将所述目标消息写入所述消息推送系统维护的目标消息队列,以供消息推送系统确定所述目标消息对应的目标订阅端以及供所述目标订阅端从所述目标消息队列中获取所述目标消息。
本申请实施例还提供一种消息传输方法,包括:
确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,其中,不同消息队列中消息的消息主题不同;
从至少一个订阅端中,确定已订阅任意一种目标消息主题的目标订阅端;
向所述目标订阅端提供所述目标订阅端已订阅的目标消息主题下的待传输消息。
本申请实施例还提供一种消息传输方法,包括:
接收触发指令,所述触发指令中包含待传输消息的消息主题;
若所述触发指令中的消息主题为已订阅主题,则基于消息主题与消息队列的对应关系,从共享的至少一个消息队列中,确定所述消息主题对应的目标消息队列;
从所述目标消息队列中获取所需的消息。
本申请实施例还提供一种计算设备,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
获取目标消息的消息主题;
基于消息主题与消息队列的对应关系,从至少一个消息队列中,确定所述目标消息的消息主题对应的目标消息队列;
通过所述通信组件将所述目标消息写入所述消息推送系统维护的目标消息队列,以供所述消息推送系统确定所述目标消息对应的目标订阅端以及供所述目标订阅端从所述目标消息队列中获取所述目标消息。
本申请实施例还提供一种分发节点,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,其中,不同消息队列中消息的消息主题不同;
通过所述通信组件将所述至少一条待传输消息各自对应的目标消息主题广播至至少一个连接节点,以供所述至少一个连接节点从至少一个订阅端中确定已订阅所述待传输消息的目标订阅端。
本申请实施例还提供一种连接节点,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
通过所述通信组件接收分发节点提供的至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题;
若负载的至少一个订阅端中,存在已订阅任意一种目标消息主题的目标订阅端,则向所述目标订阅端发出触发指令,以触发所述目标订阅端从其已订阅的目标消息主题对应的消息队列中获取所需的消息;
其中,所述触发指令中包含所述目标订阅端已订阅的目标消息主题。
本申请实施例还提供一种计算设备,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
通过所述通信组件接收触发指令,所述触发指令中包含待传输消息的消息主题;
若所述触发指令中的消息主题为已订阅主题,则基于消息主题与消息队列的对应关系,从共享的至少一个消息队列中,确定所述消息主题对应的目标消息队列;
从所述目标消息队列中获取所需的消息。
本申请实施例还提供一种存储计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行前述的消息传输方法。
在本申请实施例中,部署了至少一条消息队列,且不同消息队列对应的消息主题不同,基于此,发送端可按照消息主题,将待传输消息写入对应的消息队列,无需再查找待传输消息对应的订阅端,实现发送端与传输链路的解耦,这可有效节省发送端的发送耗时。而且,基于按消息主题管理消息队列的模式,消息推送系统可快捷、准确地确定出待传输消息对应的目标订阅端,这可有效提高消息传输的精准度。另外,基于消息队列的共享机制,订阅端可按需从消息队列中获取消息,使得消息传输更加方便、灵活。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请一示例性实施例提供的一种消息传输系统的结构示意图;
图1b为本申请一示例性实施例提供的另一种消息传输系统的结构示意图;
图2为本申请一示例性实施例提供的一种消息推送系统的结构示意图;
图3为本申请一示例性实施例提供的一种消息传输方法的流程示意图;
图4为本申请一示例性实施例提供的另一种消息传输方法的流程示意图;
图5为本申请一示例性实施例提供的又一种消息传输方法的流程示意图;
图6为本申请一示例性实施例提供的一种计算设备的结构示意图;
图7为本申请一示例性实施例提供的一种分发节点的结构示意图;
图8为本申请一示例性实施例提供的一种连接节点的结构示意图;
图9为本申请一示例性实施例提供的另一种计算设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对现有的消息传输方案存在的发送耗时长、传输精确度不够高等技术问题,在本申请的一些实施例中:部署了至少一条消息队列,且不同消息队列对应的消息主题不同,基于此,发送端可按照消息主题,将待传输消息写入对应的消息队列,无需再查找待传输消息对应的订阅端,实现发送端与传输链路的解耦,这可有效节省发送端的发送耗时。而且,基于按消息主题管理消息队列的模式,消息推送系统可快捷、准确地确定出待传输消息对应的目标订阅端,这可有效提高消息传输的精准度。另外,基于消息队列的共享机制,订阅端可按需从消息队列中获取消息,使得消息传输更加方便、灵活。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1a为本申请一示例性实施例提供的一种消息传输系统的结构示意图。如图1a所示,该消息传输系统包括:消息推送系统10、至少一个发送端11和至少一个订阅端12,消息推送系统10分别与至少一个发送端11和至少一个订阅端12通信连接。
本申请实施例提供的消息传输系统可应用于各种需要进行消息传输的场景中,例如,移动直播、车联网、金融支付、智能餐饮、即时聊天等多种应用场景。本实施例对应用场景不作限定。
其中,消息推送系统10与至少一个发送端11之间以及消息推送系统10与至少一个订阅端12之间,可以是有线或无线网络连接,本实施例对此不作限定。另外,可按需设定消息推送系统10与至少一个发送端11之间以及消息推送系统10与至少一个订阅端12之间的通信协议类型,例如,消息推送系统10与至少一个发送端11之间以及消息推送系统10与至少一个订阅端12之间可采用MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议,当然,还可采用STOMP、GB-808、新能源国标等主流通信协议,本实施例并不限于此。
本实施例中,可预先部署至少一条消息队列,消息队列可以消息主题作为名称,不同消息队列对应的消息主题不同。这样,可形成消息主题与消息队列的对应关系。
在不同场景下的消息主题是丰富多样的。例如,在即时聊天场景中,消息主题可以是聊天群的名称;在移动直播场景中,消息主题则可以是直播间名称等等。
本实施例中,订阅端12可按需订阅消息主题。而且,订阅端12所订阅的消息主题可以是动态变化的。
其中,至少一条消息队列可存储在共享存储区域中。
实际应用中,消息传输系统中可部署队列子系统,以通过队列子系统维护至少一条消息队列。
在物理实现上,队列子系统可以是具有队列管理能力的物理机、虚拟机、或云服务器等等,本实施例对此不作限定。在部署形式上,队列子系统可采用非关系型数据库NOSQL系统或者支持预设数据量级的队列系统等等,本实施例并不限于此。
基于此,发送端11可基于消息主题与消息队列的对应关系,按照消息主题,向至少一条消息队列中写入待传输消息。
在不同的应用场景中,消息承载的内容可能不完全相同,例如,在即时聊天场景中,消息可以承载聊天内容;在移动直播场景中,消息则可承载视频内容等等。
值得说明的是,本实施例中,消息主题与消息队列的对应关系可实现为索引表等形式。当然,本实施例并不限于此。
通常,消息传输可采用发布/订阅模式,例如,Pub/Sub模式等。这类模式下,任何消息都属于一个消息主题下。
本实施例中,对发送端11来说,可确定当前消息的消息主题,基于消息主题与消息队列的对应关系,从至少一条消息队列中,确定当前消息的消息主题对应的目标消息队列;将当前消息写入目标消息队列中。
这样,待传输的消息将被按照消息主题写入到对应的消息队列中。
对于发送端11来说,其在消息传输过程中的使命到此截止,因此,可实现发送端11与后续传输链路的解耦,不需要发送端11确定待传输消息对应的订阅端12,这可有效提高发送端11的发送效率。
正如前文提及的,本实施例中,至少一个消息队列处于共享状态,消息推送系统10及至少一个订阅端12也可访问至少一个消息队列。
基于此,本实施例中,消息推送系统10可确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题;从至少一个订阅端12中,确定已订阅任意一种目标消息主题的目标订阅端;并向目标订阅端发出触发指令,触发指令中包含目标订阅端已订阅的目标消息主题。
其中,至少一条待传输消息各自对应的目标消息主题可构成消息主题集,消息主题集中包含至少一个消息主题。实际应用中,消息主题集中不存在重复的消息主题。
对于消息推送系统10来说,可周期性或者在预设的时间点上确定至少一条消息队列中的至少一条待传输消息对应的目标电子消息主题。例如,消息推送系统10可每隔1ms执行一次确定至少一条消息队列中的至少一条待传输消息对应的目标消息主题的操作。
为便于描述,后文中,涉及到对至少一条待传输消息各自对应的目标消息主题的整体处理过程,将按照消息主题集进行描述,但应当理解的是,消息主题集并不是需要真实构建的数据集合,仅是一种代称。
这样,在一次确定至少一条消息队列中的待传输消息对应的消息主题集的操作下,所需处理的待传输消息可能是一条或多条。而在传输消息为多条的情况下,多条传输消息各自对应的消息主题中可能存在重复的问题。为此,本实施例中,可将重复的消息主题进行合并,以获得至少一条消息队列中的待传输消息对应的消息主题集。
因此,本实施例中,消息主题集中可不存在重复的消息主题。
这里,消息主题集可用于表征待传输的消息主题。
本实施例中,消息推送系统10可与至少一个订阅端12通信连接,且消息推送系统10可获知至少一个订阅端12各自订阅的消息主题。
这样,消息推送系统10可基于至少一个订阅端12各自订阅的消息主题以及前述的消息主题集,确定至少一个订阅端12中,是否存在已订阅了消息主题集中任意一种消息主题的目标订阅端。
如果存在,消息推送系统10可向目标订阅端发送触发指令,以触发目标订阅端进行消息获取。
对于目标订阅端来说,其可能订阅了消息主题集中的一种或多种消息主题。而不同目标订阅端订阅在消息主题集中消息主题可能不完全相同。
为此,消息推送系统10可将消息主题中由目标订阅端订阅的目标消息主题配置在触发指令中,以将消息主题中,目标订阅端所订阅的目标消息主题通知给目标订阅端。这使得,消息推送系统10可将消息主题集中的各消息主题准确地通知到对应的目标订阅端,从而保证消息传输的精准度。
对于目标订阅端来说,可从目标消息主题对应的消息队列中获取所需的消息。
本实施例中,目标订阅端可在接收到触发指令的情况下,可解析出触发指令中包含的消息主题,若触发指令中的消息主题为已订阅主题,则基于消息主题与消息队列的对应关系,从共享的至少一个消息队列中,确定消息主题对应的目标消息队列;从目标消息队列中获取所需的消息。
据此,本实施例中,部署了至少一条消息队列,且不同消息队列对应的消息主题不同,基于此,发送端可按照消息主题,将待传输消息写入对应的消息队列,无需再查找待传输消息对应的订阅端,实现发送端与传输链路的解耦,这可有效节省发送端的发送耗时。而且,基于按消息主题管理消息队列的模式,消息推送系统可快捷、准确地确定出待传输消息对应的目标订阅端,这可有效提高消息传输的精准度。另外,基于消息队列的共享机制,订阅端可按需从消息队列中获取消息,使得消息传输更加方便、灵活。
在上述或下述实施例中,消息推送系统可包括分发节点23和至少一个连接节点22。图1b为本申请一示例性实施例提供的另一种消息传输系统的结构示意图。参考图1b,分发节点23与至少一个连接节点22通信连接,而至少一个连接节点22则可用于负载至少一个订阅端21,且至少一个连接节点22各自负载的订阅端21可以是动态变化的。
实际应用中,可采用负载均衡或按地域划分的方式,来为至少一个连接节点22分配订阅端21,当然,本实施例并不限于这种分配方式。总之,至少一个订阅端21可随机或按规则连接至至少一个连接节点22。
参考图1b,本实施例中,可由分发节点23和至少一个连接节点22配合,实现消息推送系统的相关功能。
本实施例中,分发节点23,可用于确定至少一条消息队列中的待传输消息对应的消息主题集;并将消息主题集广播至至少一个连接节点22。
对于分发节点23来说,可采用多种实现方式来确定至少一条消息队列中的待传输消息对应的消息主题集。
在一种示例性实现方式中,发送端20,还可在执行消息写入操作的情况下,根据所写入的待传输消息的消息主题,生成事件信息;并将事件信息写入事件队列中。而分发节点23,则可从事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知,作为消息主题集,其中,不同主题通知承载不同的消息主题。
在该实现方式中,事件信息可用于表征消息写入事件。发送端20可针对每一条待传输消息,生成一事件信息。事件信息中携带有待传输消息的消息主题。
其中,可由前述的队列子系统来管理事件队列。事件队列的数量可以是一条或多条。优选地,包含相同消息主题的事件信息可写入同一事件队列中,以便于分发节点23执行事件信息合并操作,当然,本实施例对此不做限定,包含相同消息主题的事件信息也可写入不同的事件队列中。
值得说明的是,图1b中,发送端20连接至连接节点,以接入系统,并通过连接节点、分发节点构成用于写入消息的通信链路,从而将待传输消息写入消息队列中。但本实施例并不限于图1b所示的用于写入消息的通信链路形式,发送端20还可通过其它通信链路执行消息写入操作,本实施例对此不做限定。同理,订阅端21可如图1b所示,通过连接节点、分发节点构成的用于获取消息的通信链路,从消息队列中获取所需的消息。但本实施例并不限于图1b所示的用于获取消息的通信链路形式,订阅端21还可通过其它通信链路执行获取消息操作,本实施例对此不做限定。
对于分发节点23来说,可周期性或者在预设的时间点上执行事件信息读取操作。例如,分发节点23可每隔1ms从事件队列中读取一次事件信息。
这样,在一次事件信息读取操作下,分发节点23读取到的事件信息可能是一条或多条。而在事件信息为多条的情况下,多条事件信息各自包含的消息主题中可能存在重复的问题。为此,本实施例中,分发节点23可将包含相同消息主题的事件信息合并为一主题通知。这样,基于分发节点23执行的事件信息合并操作,可获得至少一个主题通知,而不同主题通知承载的消息主题不同。至少一个主题通知,可构成前述的消息主题集,
在该实现方式中,事件信息和至少一条消息队列中发生的消息写入事件一一对应,也即,至少一个条消息队列中的每一条消息都存在一条事件信息。这保证了分发节点23可准确、无遗漏地确定出至少一条消息队列中的待传输消息对应的消息主题集。据此,基于事件队列,可简单可靠地实现待传输消息的实时通知,保证了消息传输的实时性。
在该示例性实现方式中,分发节点23可将前述获得的至少一个主题通知广播至至少一个连接节点22。
当然,本实施例中,分发节点23还可采用其它实现方式确定至少一条消息队列中的待传输消息对应的消息主题集。例如,分发节点23可直接从至少一条消息队列中获取待传输消息的消息主题,并构建消息主题集等,本实施例并不限于此。
本实施例中,对单个连接节点22来说,可用于若其负载的至少一个订阅端21中,存在已订阅消息主题集中任意一种消息主题的目标订阅端,则向目标订阅端发出触发指令。
本实施例中,在分发节点23的单次广播操作下,每个连接节点22都将接收到前述的消息主题集。
对单个连接节点22来说,可获知其负载的至少一个订阅端21各自已订阅的消息主题。这样,单个连接节点22,可基于其负载的至少一个订阅端21各自已订阅的消息主题以及接收到的消息主题集,确定其负载的至少一个订阅端21中是否存在已订阅了消息主题集中任意一种消息主题的目标订阅端。
若存在,则该连接节点22可向其负载的目标订阅端发送前述的触发指令,以触发目标订阅端执行前述的消息获取操作。
本实施例中,连接节点22可在本地维护订阅端与消息主题之间的订阅关系,订阅端与消息主题之间的订阅关系,用于表征连接节点22负载的至少一个订阅端21各自订阅的消息主题。
正如前文提及的,连接节点22负载的订阅端21可能是动态变化地,相应地,连接节点22本地维护的订阅端与消息主题之间的订阅关系,也是动态变化的。
本实施例中,第一订阅端可在连接至第一连接节点的情况下,将自身订阅的消息主题提供给第一连接节点,其中,第一连接节点为至少一个连接节点22中的任意一个,第一订阅端为至少一个订阅端21中的任意一个。相应地,第一连接节点,可根据第一订阅端订阅的消息主题,加入本地的订阅端与消息主题之间的订阅关系,以更新其本地的订阅端与消息主题之间的订阅关系。
而当第一订阅端所连接的连接节点22发生变化的情况下,第一订阅端可将自身订阅的消息主题提供给第二连接节点,第二连接节点为至少一个连接节点22中不同于第一连接节点的任意一个,第二连接节点为第一订阅端新连接的连接节点22。在这种情况下,对于第一连接节点来说,则可从其本地的订阅端与消息主题之间的订阅关系中,删除第一订阅端及其订阅的消息主题,以更新其本地的订阅端与消息主题之间的订阅关系。
这样,可保证连接节点22本地维护的订阅端与消息主题之间的订阅关系足够新鲜、足够准确,这可为目标订阅端的确定提供准确的依据,从而提高消息传输的精准度。
基于此,本实施例中,对于单个连接节点22来说,可基于本地维护的订阅端与消息主题之间的订阅关系,遍历消息主题集;若当前遍历的消息主题存在于订阅端与消息主题之间的订阅关系中,则查找订阅端与消息主题之间的订阅关系中与当前遍历的消息主题对应的订阅端21,作为目标订阅端。
单个连接节点22可向其确定出的目标订阅端发送触发指令,以引导目标订阅端到至少一条消息队列中获取所需的消息。
据此,本实施例中,分发节点23到至少一个连接节点22,再到至少一个订阅端21,可形成若干条消息传输链路,各环节相互配合,将订阅端21引导至正确的消息队列,以使订阅端21及时地获取到自身订阅的消息,这可保证消息传输的实时性和全面性,避免漏传、错传等问题。
在上述或下述实施例中,参考图1b,可以前述的队列子系统24,对消息及事件信息进行持久化存储。
在一些实现方式中,可采用Nosql系统来存储至少一条消息队列。实际应用中,消息队列的数量可能是百万级别,使用Nosql系统可实现数量级别的支持。
而事件队列则可采用现有的队列系统,如RekcetMQ这样的传统队列MQ系统等。当然,事件队列也可以是一条或多条。
而在另一些实现方式中,则可对传统的MQ系统进行改进,例如,扩容或改变存储格式等方式,以将传统的MQ系统改造成可内置百万级别队列的队列系统。
在这些实现方式中,可采用改进后的MQ系统来存储至少一条消息队列和至少一条事件队列。
当然,也可采用未来可能出现的能够支持百万级别队列的队列系统来存储本实施例中的消息队列和事件队列。
本实施例中,消息队列和事件队列的持久化存储模式,可保证消息和事件信息不会丢失,这保证了传输链路的通畅性,从而可保证消息传输的实时性。而且,可提高消息传输的灵活性,为离线传输、历史消息获取、ACK机制等提供了基础。另外,可支持百万级别甚至更大级别的队列数量,这可大大提高消息传输的吞吐量。
在上述或下述实施例中,可支持按照多级主题或通配符等模式进行消息传输。
本实施例中,可按照消息传输所采用的模式,来确定至少一条消息队列对应的消息主题。
以下将以多级主题模式为例,对消息传输过程进行说明。
在一种实现方式中,至少一个消息队列可分别对应不同的子级主题。而对于发送端来说,若当前消息的消息主题为子级主题,则可将当前消息写入其消息主题对应的消息队列中;若当前消息的消息主题为父级主题,则可将当前消息写入其消息主题的子级主题各自对应的目标消息队列中,此时,目标消息队列可能为多个。
而对于订阅端,则可按照父级主题或子级主题模式订阅消息主题。若订阅端按照父级主题模式订阅消息主题,则在订阅端执行消息获取操作时,可从至少一个消息队列中查找该订阅端订阅的父级主题下的各子级主题对应的消息队列,以从查找出的消息队列中获取消息。若订阅端按照子级主题模式订阅消息主题,则在订阅端执行消息获取操作时,可直接从其消息主题对应的消息队列中获取消息。
在另一种实现方式中,至少一个消息队列也可分别对应不同的父级主题。对于发送端,则可按照父级主题,将当前消息写入一消息队列中;对于订阅端,若订阅端按照父级主题模式订阅消息主题,则在订阅端执行消息获取操作时,可直接从其消息主题对应的消息队列中获取消息。若订阅端按照子级主题模式订阅消息主题,则在订阅端执行消息获取操作时,可从至少一个消息队列中查找该订阅端订阅的子级主题的父级主题对应的消息队列,以从查找出的消息队列中获取消息。
当然,还可采用其它实现方式,支持多级主题模式下的消息传输,本实施例并不限于此。
以下将以通配符模式为例,对消息传输过程进行说明。
本实施例中,至少一条消息队列可分别对应不同的通配符。
其中,通配符是一种特殊的消息主题,其可支持模糊查找需求。例如,一通配符可以是AB*,这种情况下,ABC、ABD等均与该通配符匹配。
对应发送端来说,可确定与当前消息的消息主题匹配的至少一个目标通配符;将至少一个目标通配符各自对应的消息队列,作为目标消息队列。其中的,当前消息的消息主题可能同时匹配到多个目标通配符。例如,若当前消息的消息主题为ABC,则当前消息可能匹配到通配符AB*和A*C,此时,发送端可将当前消息分别写入通配符AB*和A*C各自对应的消息队列中。
对于订阅端来说,若其订阅的消息主题为通配符,则在订阅端执行消息获取操作时,可直接从其订阅的通配符对应的消息队列中获取消息;而若其订阅的消息主题不是通配符,则在订阅端执行消息获取操作时,可确定与其订阅的消息主题匹配的至少一个目标通配符,并从至少一个目标通配符各自对应的消息队列中获取消息。
当然,本实施例中,还可采用其它实现方式,支持通配符模式下的消息传输,本实施例并不限于此。
本实施例中,可灵活配置消息传输采用的模式,从而满足不同场景下的消息传输需求,使得消息传输方案更加灵活,适配性更强。
在上述或下述实施例中,在订阅端执行消息获取操作时,可根据自身的消息获取需求,在目标消息主题对应的消息队列中确定目标位点;从目标位点上拉取所需的消息。
本实施例中,订阅端可采用拉(pull)操作,从目标消息主题对应的消息队列中获取所需的消息。当然,本实施例并不限于此。
本实施例中,对单个消息队列来说,其上的消息各自对应一个位点。
其中,位点可基于写入时间、执行写入的发送端标识等信息进行表征。
对于订阅端来说,可根据自身的消息获取需求,确定目标消息主题对应的消息队列中确定目标位点。
例如,在即时聊天场景中,若A用户与B用户正处于聊天会话C中,A用户已经接收到B用户在10:03发送的一条消息,若B用户在10:04又发送了一条消息,则对于A用户来说,其消息获取需求可以是获取B用户在10:03之后发送的消息。这样,首先,可确定A用户订阅的消息主题为聊天会话C,然后,可确定在聊天会话C对应的消息队列中的目标位点为10:03之后的位点。据此,A用户可从聊天会话C对应的消息队列中获取10:03之后的位点上消息,从而A用户可获取到B用户在10:04发送的那条消息。
另外,本实施例中,基于至少一条消息队列的共享机制和持久化存储机制,订阅端可从至少一个消息队列中获取离线消息和/或历史消息。
实际应用中,订阅端可根据离线消息和/或历史消息获取需求,在至少一条消息队列中确定目标位点;从目标位点上拉取所需的消息。
例如,可为订阅端缓存其未处理的主题通知,从而保证订阅端不错失离线消息,等等。
当然,为了保证消息的隐私性,在支持订阅端获取离线消息或历史消息的方案中,可增加访问控制机制,比如,为至少一条消息队列设置访问权限验证环节等,本实施例对此不做限定。
据此,本实施例中,采用订阅端主动获取消息的模式,可避免消息的漏传。而且,基于至少一条消息队列和事件队列,还同时支持在线消息、离线消息及历史消息的传输,实现了这几种传输场景的系统模型的统一。
以上,从消息传输系统的维度描述了消息传输方案,但应当理解的是,本案中的消息推送系统可作为独立的产品在不同消息传输场景中进行使用。
图2为本申请一示例性实施例提供的一种消息推送系统的结构示意图。参考图2,该消息推送系统包括:队列子系统30、分发节点31和至少一个连接节点32;
队列子系统30,用于维护至少一条消息队列,至少一条消息队列各自承载的消息主题不同;
分发节点31,用于确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,并将至少一种目标消息主题广播至至少一个连接节点;
连接节点32,用于在其负载的至少一个订阅端中存在已订阅任意一种目标消息主题的目标订阅端的情况下,向目标订阅端提供目标订阅端已订阅的目标消息主题下的待传输消息。
其中,队列子系统30,还用于维护至少一条事件队列,事件队列用于存储事件信息,事件信息包括写入消息队列中的单条消息的消息主题。
基于此,分发节点31,可从事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将至少一种主题通知广播至至少一个连接节点。
其中,队列子系统30,用于持久化存储至少一条消息队列和至少一条事件队列。
另外,队列子系统30可采用非关系型数据库系统或支持预设数据量级的队列系统。
对于任意一个连接节点来说,在确定目标订阅端时,可基于本地维护的订阅端与消息主题之间的订阅关系,遍历至少一条目标消息主题;
若当前遍历的目标消息主题存在于订阅端与消息主题之间的订阅关系中,则查找订阅端与消息主题之间的订阅关系中与当前遍历的目标消息主题对应的订阅端,作为目标订阅端。
另外,连接节点32,还用于:
获取其负载的至少一个订阅端各自所订阅的消息主题;
根据其负载的至少一个订阅端各自所订阅的消息主题,维护订阅端与消息主题之间的订阅关系。
由于连接节点负载的至少一个订阅端可能是动态变化的,对此,连接节点32,还可在其负载的至少一个订阅端发生增减的情况下,根据增减后的至少一个订阅端各自所订阅的消息主题,更新订阅端与消息主题之间的订阅关系。
其中,连接节点在向目标订阅端提供待传输消息时,用于:
向目标订阅端发出触发指令,触发指令中包含目标订阅端订阅的目标消息主题,以供目标订阅端从其订阅的目标消息主题对应的消息队列中获取所需的消息。
值得说明的是,上述对于消息推送系统的相关技术细节可参考前述消息传输系统中针对消息推送系统的相关描述,为节省篇幅,有些技术细节为展开描述,但这不应造成对本申请保护范围的损失。
图3为本申请一示例性实施例提供的一种数消息传输方法的流程示意图。本实施例提供的消息传输方法可以由一消息传输装置来执行,该消息传输装置可以实现为软件或实现为软件和硬件的组合,该消息传输装置可集成设置在前述的发送端中。如图3所示,该方法包括:
步骤300、获取目标消息的消息主题;
步骤301、基于消息主题与消息队列的对应关系,从至少一个消息队列中,确定目标消息的消息主题对应的目标消息队列;
步骤302、将目标消息写入消息推送系统维护的目标消息队列,以供消息推送系统确定目标消息对应的目标订阅端以及供目标订阅端从目标消息队列中获取目标消息。
在一可选实施例中,该方法还包括:
根据目标消息的消息主题,生成事件信息;
将事件信息,写入事件队列中,以供消息推送系统基于事件队列确定目标订阅端。
在一可选实施例中,步骤基于消息主题与消息队列的对应关系,确定目标消息的消息主题对应的目标消息队列,包括:
若至少一个消息队列以通配符为名称,则确定与目标消息的消息主题匹配的至少一个目标通配符;
将至少一个目标通配符各自对应的消息队列,作为目标消息队列。
值得说明的是,上述关于消息传输方法的实施例中的技术细节或未尽事宜,可参考前述消息传输系统中针对发送端相关描述,为节省篇幅,在此不再赘述,但这不应造成对本申请保护范围的损失。
图4为本申请一示例性实施例提供的另一种消息传输方法的流程示意图。本实施例提供的消息传输方法可以由一消息传输装置来执行,该消息传输装置可以实现为软件或实现为软件和硬件的组合,该消息传输装置可集成设置在前述的消息推送系统中。如图4所示,该方法包括:
步骤400、确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,其中,不同消息队列中消息的消息主题不同;
步骤401、从至少一个订阅端中,确定已订阅任意一种目标消息主题的目标订阅端;
步骤402、向目标订阅端提供目标订阅端已订阅的目标消息主题下的待传输消息。
在一可选实施例中,步骤402可包括:
向目标订阅端发出触发指令,触发指令中包含消息主题集中由目标订阅端订阅的目标消息主题,以触发目标订阅端从其已订阅的目标消息主题对应的消息队列中获取所需的消息。
在一可选实施例中,步骤401,包括:
利用分发节点,将至少一条待传输消息各自对应的目标消息主题广播至至少一个连接节点,至少一个连接节点各自负载的订阅端动态变化;
若第一连接节点负载的至少一个订阅端中,存在已订阅任意一种目标消息主题的目标订阅端,则利用第一连接节点向目标订阅端发出触发指令;
其中,第一连接节点为至少一个连接节点中的任意一个。
在一可选实施例中,步骤利用分发节点,将消息主题集广播至至少一个连接节点,包括:
利用分发节点从事件队列中读取未读的事件信息,事件信息写入消息队列中的单条消息的消息主题;
将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;
将至少一种主题通知广播至至少一个连接节点。
在一可选实施例中,该方法具体包括:
基于第一连接节点本地维护的订阅端与消息主题之间的订阅关系,利用第一连接节点遍历至少一条待传输消息各自对应的目标消息主题;
若当前遍历的消息主题存在于订阅端与消息主题之间的订阅关系中,则查找订阅端与消息主题之间的订阅关系中与当前遍历的目标消息主题对应的订阅端,作为目标订阅端。
在一可选实施例中,该方法还包括:
利用第一连接节点监听负载在第一连接节点上的至少一个订阅端各自订阅的消息主题;
根据监听到的至少一个订阅端各自订阅的消息主题,动态维护本地的订阅端与消息主题之间的订阅关系。
值得说明的是,上述关于消息传输方法的实施例中的技术细节或未尽事宜,可参考前述消息传输系统中针对消息推送系统的相关描述,为节省篇幅,在此不再赘述,但这不应造成对本申请保护范围的损失。
图5为本申请一示例性实施例提供的又一种消息传输方法的流程示意图。本实施例提供的消息传输方法可以由一消息传输装置来执行,该消息传输装置可以实现为软件或实现为软件和硬件的组合,该消息传输装置可集成设置在前述的订阅端中。如图5所示,该方法包括:
步骤500、接收触发指令,触发指令中包含待传输消息的消息主题;
步骤501、若触发指令中的消息主题为已订阅主题,则基于消息主题与消息队列的对应关系,从共享的至少一个消息队列中,确定消息主题对应的目标消息队列;
步骤502、从目标消息队列中获取所需的消息。
在一可选实施例中,步骤502,包括:
根据自身的消息获取需求,在目标消息主题对应的消息队列中确定目标位点;
从目标位点上拉取所需的消息。
在一可选实施例中,该方法还包括:
将已订阅主题提供给当前连接的连接节点,以供连接节点确定至少一个消息队列中是否存在与已阅读主题相关的待传输消息。
在一可选实施例中,该方法还包括:
从至少一个消息队列中获取离线消息和/或历史消息。
值得说明的是,上述关于消息传输方法的实施例中的技术细节或未尽事宜,可参考前述消息传输系统中针对订阅端的相关描述,为节省篇幅,在此不再赘述,但这不应造成对本申请保护范围的损失。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤400至步骤402的执行主体可以为设备A;又比如,步骤400和401的执行主体可以为设备A,步骤402的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如401、402等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的节点、设备等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图6为本申请一示例性实施例提供的一种计算装置的结构示意图。如图6所示,该计算设备包括:存储器60、处理器61以及通信组件62。
处理器61,与存储器60和通信组件62耦合,用于执行存储器中的计算机程序,以用于:
获取目标消息的消息主题;
基于消息主题与消息队列的对应关系,从至少一个消息队列中,确定目标消息的消息主题对应的目标消息队列;
通过通信组件62将目标消息写入消息推送系统维护的目标消息队列,以供消息推送系统确定目标消息对应的目标订阅端以及供目标订阅端从目标消息队列中获取目标消息。
在一可选实施例中,处理器61还用于:
根据目标消息的消息主题,生成事件信息;
将事件信息,写入事件队列中,以供消息推送系统基于事件队列确定目标订阅端。
在一可选实施例中,处理器61在基于消息主题与消息队列的对应关系,确定目标消息的消息主题对应的目标消息队列时,用于:
若至少一个消息队列以通配符为名称,则确定与目标消息的消息主题匹配的至少一个目标通配符;
将至少一个目标通配符各自对应的消息队列,作为目标消息队列。
值得说明的是,上述关于计算设备的实施例中的技术细节或未尽事宜,可参考前述消息传输系统中针对发送端的相关描述,为节省篇幅,在此不再赘述,但这不应造成对本申请保护范围的损失。
进一步,如图6所示,该计算设备还包括:电源组件63等其它组件。图6中仅示意性给出部分组件,并不意味着计算设备只包括图6所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由计算设备执行的各步骤。
图7为本申请一示例性实施例提供的一种分发节点的结构示意图。参考图7,该分发节点,包括存储器70、处理器71和通信组件72;
存储器用于存储一条或多条计算机指令;
处理器与存储器和通信组件耦合,用于执行一条或多条计算机指令,以用于:
确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,其中,不同消息队列中消息的消息主题不同;
通过通信组件将至少一条待传输消息各自对应的目标消息主题广播至至少一个连接节点,以供至少一个连接节点从至少一个订阅端中确定已订阅待传输消息的目标订阅端。
在一可选实施例中,处理器71用于:
从事件队列中读取未读的事件信息,事件信息中包含写入消息队列中的单条消息的消息主题;
将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将至少一种主题通知广播至至少一个连接节点。
进一步,如图7所示,该分发节点还包括:电源组件73等其它组件。图7中仅示意性给出部分组件,并不意味着分发节点只包括图7所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由分发节点执行的各步骤。
图8为本申请一示例性实施例提供的一种连接节点的结构示意图。参考图8,该连接节点,包括存储器80、处理器81和通信组件82;
存储器80用于存储一条或多条计算机指令;
处理器81与存储器80和通信组件82耦合,用于执行一条或多条计算机指令,以用于:
通过通信组件82接收分发节点提供的至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题;
若负载的至少一个订阅端中,存在已订阅任意一种目标消息主题的目标订阅端,则向目标订阅端发出触发指令,以触发目标订阅端从其已订阅的目标消息主题对应的消息队列中获取所需的消息;
其中,触发指令中包含目标订阅端已订阅的目标消息主题。
在一可选实施例中,处理器81用于:
基于本地维护的订阅端与消息主题之间的订阅关系,遍历至少一条目标消息主题;
若当前遍历的目标消息主题存在于订阅端与消息主题之间的订阅关系中,则查找订阅端与消息主题之间的订阅关系中与当前遍历的目标消息主题对应的订阅端,作为目标订阅端。
在一可选实施例中,处理器81还用于:
获取所述连接节点负载的至少一个订阅端各自所订阅的消息主题;
根据所述连接节点负载的至少一个订阅端各自所订阅的消息主题,维护订阅端与消息主题之间的订阅关系。
在一可选实施例中,处理器81还用于:
在所述连接节点负载的至少一个订阅端发生增减的情况下,根据增减后的至少一个订阅端各自所订阅的消息主题,更新订阅端与消息主题之间的订阅关系。
在一可选实施例中,处理器81用于:
向目标订阅端发出触发指令,触发指令中包含目标订阅端订阅的目标消息主题,以供目标订阅端从其订阅的目标消息主题对应的消息队列中获取所需的消息。
进一步,如图8所示,该连接节点还包括:电源组件83等其它组件。图8中仅示意性给出部分组件,并不意味着连接节点只包括图8所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由连接节点执行的各步骤。
值得说明的是,上述分发节点和连接节点的实施例中的技术细节或未尽事宜,可参考前述消息传输系统中针对分发节点和连接节点的相关描述,为节省篇幅,在此不再赘述,但这不应造成对本申请保护范围的损失。
图9为本申请一示例性实施例提供的另一种计算装置的结构示意图。该计算设备包括:存储器90、处理器91以及通信组件92。
处理器91,与存储器90和通信组件92耦合,用于执行存储器中的计算机程序,以用于:
通过通信组件92接收触发指令,触发指令中包含待传输消息的消息主题;
若触发指令中的消息主题为已订阅主题,则基于消息主题与消息队列的对应关系,从共享的至少一个消息队列中,确定消息主题对应的目标消息队列;
从目标消息队列中获取所需的消息。
在一可选实施例中中,处理器91在从目标消息队列中获取所需的消息时,用于:
根据自身的消息获取需求,在目标消息主题对应的消息队列中确定目标位点;
从目标位点上拉取所需的消息。
在一可选实施例中,处理器91还用于:
将已订阅主题提供给当前连接的连接节点,以供连接节点确定至少一个消息队列中是否存在与已阅读主题相关的待传输消息。
在一可选实施例中,处理器91还用于:
从至少一个消息队列中获取离线消息和/或历史消息。
值得说明的是,上述关于计算设备的实施例中的技术细节或未尽事宜,可参考前述消息传输系统中针对订阅端的相关描述,为节省篇幅,在此不再赘述,但这不应造成对本申请保护范围的损失。
进一步,如图9所示,该计算设备还包括:电源组件93等其它组件。图9中仅示意性给出部分组件,并不意味着计算设备只包括图9所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由计算设备执行的各步骤。
其中,上述图6-9中的存储器,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
上述图6-9中的通信组件,被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述图6-9中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (32)
1.一种消息推送系统,其特征在于,包括:队列子系统、分发节点和至少一个连接节点;
所述队列子系统,用于维护至少一条消息队列,所述至少一条消息队列各自承载的消息主题不同;维护至少一条事件队列,所述事件队列用于存储事件信息,所述事件信息包括写入所述消息队列中的单条消息的消息主题;
所述分发节点,用于确定所述至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题;从所述事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将所述至少一种主题通知广播至所述至少一个连接节点;
所述连接节点,用于在接收到所述主题通知且其负载的至少一个订阅端中存在已订阅任意一种目标消息主题的目标订阅端的情况下,向所述目标订阅端发出触发指令,所述触发指令中包含所述目标订阅端订阅的目标消息主题,以供所述目标订阅端从其订阅的目标消息主题对应的消息队列中获取所需的消息。
2.根据权利要求1所述的系统,其特征在于,所述队列子系统,用于持久化存储所述至少一条消息队列和所述至少一条事件队列。
3.根据权利要求2所述的系统,其特征在于,所述队列子系统采用非关系型数据库系统或支持预设数据量级的队列系统。
4.根据权利要求1所述的系统,其特征在于,所述连接节点在确定目标订阅端时,用于:
基于本地维护的订阅端与消息主题之间的订阅关系,遍历所述至少一条目标消息主题;
若当前遍历的目标消息主题存在于所述订阅端与消息主题之间的订阅关系中,则查找所述订阅端与消息主题之间的订阅关系中与所述当前遍历的目标消息主题对应的订阅端,作为所述目标订阅端。
5.根据权利要求4所述的系统,其特征在于,所述连接节点,还用于:
获取其负载的至少一个订阅端各自所订阅的消息主题;
根据其负载的至少一个订阅端各自所订阅的消息主题,维护订阅端与消息主题之间的订阅关系。
6.根据权利要求5所述的系统,其特征在于,所述连接节点,还用于:
在其负载的至少一个订阅端发生增减的情况下,根据增减后的至少一个订阅端各自所订阅的消息主题,更新所述订阅端与消息主题之间的订阅关系。
7.根据权利要求1所述的系统,其特征在于,所述连接节点在向所述目标订阅端提供所述待传输消息时,用于:
向所述目标订阅端发出触发指令,所述触发指令中包含所述目标订阅端订阅的目标消息主题,以供所述目标订阅端从其订阅的目标消息主题对应的消息队列中获取所需的消息。
8.一种消息传输系统,其特征在于,包括消息推送系统、至少一个发送端和至少一个订阅端;
所述发送端,用于基于消息主题与消息队列的对应关系,按照消息主题,向至少一条消息队列中写入待传输消息;在执行消息写入操作的情况下,根据所写入的待传输消息的消息主题,生成事件信息;并将所述事件信息写入事件队列中;
所述消息推送系统,用于确定所述至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题;从所述事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将所述至少一种主题通知广播至所述消息推送系统包含的至少一个连接节点,以供所述连接节点在接收到所述主题通知时从其负载的至少一个订阅端中,确定已订阅任意一种目标消息主题的目标订阅端;并向所述目标订阅端发出触发指令,所述触发指令中包含所述目标订阅端已订阅的目标消息主题;
所述目标订阅端,用于从其订阅的目标消息主题对应的消息队列中获取所需的消息。
9.根据权利要求8所述的系统,其特征在于,所述消息推送系统包括分发节点和至少一个连接节点,所述至少一个连接节点各自负载的订阅端动态变化;
所述分发节点,用于确定所述至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题;并将所述至少一种目标消息主题广播至所述至少一个连接节点;
所述连接节点,用于若其负载的至少一个订阅端中,存在已订阅任意一种目标消息主题的目标订阅端,则向所述目标订阅端发出所述触发指令。
10.根据权利要求9所述的系统,其特征在于,还包括队列子系统,所述队列子系统,用于持久化存储所述至少一个消息队列以及所述事件队列。
11.根据权利要求10所述的系统,其特征在于,所述队列子系统采用非关系型数据库系统或支持预设数据量级的队列系统。
12.根据权利要求9所述的系统,其特征在于,所述连接节点在确定目标订阅端时,用于:
基于本地维护的订阅端与消息主题之间的订阅关系,遍历所述至少一个目标消息主题;若当前遍历的目标消息主题存在于所述订阅端与消息主题之间的订阅关系中,则查找所述订阅端与消息主题之间的订阅关系中与所述当前遍历的目标消息主题对应的订阅端,作为所述目标订阅端。
13.根据权利要求12所述的系统,其特征在于,所述订阅端,还用于在连接至第一连接节点的情况下,将自身订阅的消息主题提供给所述第一连接节点,其中,所述第一连接节点为所述至少一个连接节点中的任意一个;
所述第一连接节点,还用于根据所述订阅端订阅的消息主题,动态维护本地的所述订阅端与消息主题之间的订阅关系。
14.根据权利要求8所述的系统,其特征在于,所述发送端在向至少一条消息队列中写入待传输消息时,用于:
确定当前消息的消息主题;
基于消息主题与消息队列的对应关系,从所述至少一条消息队列中,确定所述当前消息的消息主题对应的消息队列;
将所述当前消息写入确定出的消息队列中。
15.根据权利要求14所述的系统,其特征在于,所述发送端在确定所述当前消息的消息主题对应的消息队列时,用于:
若所述至少一个消息队列以通配符为名称,则确定与所述当前消息的消息主题匹配的至少一个目标通配符;
将所述至少一个目标通配符各自对应的消息队列,作为所述当前消息的消息主题对应的消息队列。
16.根据权利要求8所述的系统,其特征在于,所述目标订阅端在从其已订阅的目标消息主题对应的消息队列中获取所需的消息时,用于:
根据自身的消息获取需求,在其已订阅的目标消息主题对应的消息队列中确定目标位点;
从所述目标位点上拉取所述所需的消息。
17.根据权利要求8所述的系统,其特征在于,所述订阅端,还用于:
从所述至少一个消息队列中获取离线消息和/或历史消息。
18.根据权利要求8所述的系统,其特征在于,传输网络与所述至少一个发送端及所述至少一个订阅端之间采用消息队列遥测传输MQTT协议。
19.一种消息传输方法,其特征在于,包括:
获取目标消息的消息主题;
基于消息主题与消息队列的对应关系,从至少一个消息队列中,确定所述目标消息的消息主题对应的目标消息队列;
将所述目标消息写入消息推送系统维护的目标消息队列,以供所述消息推送系统确定所述目标消息对应的目标订阅端以及供所述目标订阅端从所述目标消息队列中获取所述目标消息;
根据所述目标消息的消息主题,生成事件信息;
将所述事件信息,写入事件队列中,以供所述消息推送系统中的分发节点从所述事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将所述至少一种主题通知广播至所述消息推送系统中的至少一个连接节点,以触发所述连接节点在接收到所述主题通知且其负载的至少一个订阅端中存在已订阅任意一种目标消息主题的目标订阅端的情况下,向所述目标订阅端发出触发指令,所述触发指令中包含所述目标订阅端订阅的目标消息主题,以供所述目标订阅端从其订阅的目标消息主题对应的消息队列中获取所需的消息;所述事件队列用于存储事件信息,所述事件信息包括写入所述消息队列中的单条消息的消息主题。
20.根据权利要求19所述的方法,其特征在于,所述基于消息主题与消息队列的对应关系,确定所述目标消息的消息主题对应的目标消息队列,包括:
若所述至少一个消息队列以通配符为名称,则确定与所述目标消息的消息主题匹配的至少一个目标通配符;
将所述至少一个目标通配符各自对应的消息队列,作为所述目标消息队列。
21.一种消息传输方法,其特征在于,包括:
确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,其中,不同消息队列中消息的消息主题不同;
从至少一个订阅端中,确定已订阅任意一种目标消息主题的目标订阅端;
向所述目标订阅端提供所述目标订阅端已订阅的目标消息主题下的待传输消息;
其中,所述向所述目标订阅端提供所述目标订阅端已订阅的目标消息主题下的待传输消息,包括:
利用分发节点从事件队列中读取未读的事件信息,所述事件信息中包含写入所述消息队列中的单条消息的消息主题;
将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;
将所述至少一种主题通知广播至至少一个连接节点,所述至少一个连接节点各自负载的订阅端动态变化,以供所述连接节点在接收到主题通知时向其上负载的目标订阅端发出触发指令,所述触发指令中包含所述目标订阅端已订阅的目标消息主题,以触发所述目标订阅端从其已订阅的所述目标消息主题对应的消息队列中获取所需的消息。
22.根据权利要求21所述的方法,其特征在于,所述方法具体包括:
基于第一连接节点本地维护的订阅端与消息主题之间的订阅关系,利用所述第一连接节点遍历所述至少一条待传输消息各自对应的目标消息主题;
若当前遍历的消息主题存在于所述订阅端与消息主题之间的订阅关系中,则查找所述订阅端与消息主题之间的订阅关系中与所述当前遍历的目标消息主题对应的订阅端,作为所述目标订阅端。
23.根据权利要求22所述的方法,其特征在于,还包括:
利用所述第一连接节点监听负载在所述第一连接节点上的至少一个订阅端各自订阅的消息主题;
根据监听到的所述至少一个订阅端各自订阅的消息主题,动态维护本地的所述订阅端与消息主题之间的订阅关系。
24.一种消息传输方法,其特征在于,包括:
接收触发指令,所述触发指令中包含待传输消息的消息主题;
若所述触发指令中的消息主题为已订阅主题,则基于消息主题与消息队列的对应关系,从共享的至少一个消息队列中,确定所述消息主题对应的目标消息队列;
从所述目标消息队列中获取所需的消息;
其中,所述触发指令为消息推送系统中的连接节点发出的,所述消息推送系统维护至少一条事件队列,所述事件队列用于存储事件信息,所述事件信息包括写入所述消息队列中的单条消息的消息主题;所述消息推送系统中的分发节点从所述事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将所述至少一种主题通知广播至所述消息推送系统中的至少一个连接节点,以使所述连接节点在接收到主题通知时发出所述触发指令。
25.根据权利要求24所述的方法,其特征在于,所述从所述目标消息队列中获取所需的消息,包括:
根据自身的消息获取需求,在所述目标消息主题对应的消息队列中确定目标位点;
从所述目标位点上拉取所述所需的消息。
26.根据权利要求24所述的方法,其特征在于,还包括:
将已订阅主题提供给当前连接的连接节点,以供所述连接节点确定所述至少一个消息队列中是否存在与所述已订阅主题相关的待传输消息。
27.根据权利要求24所述的方法,其特征在于,还包括:
从所述至少一个消息队列中获取离线消息和/或历史消息。
28.一种计算设备,其特征在于,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
获取目标消息的消息主题;
基于消息主题与消息队列的对应关系,从至少一个消息队列中,确定所述目标消息的消息主题对应的目标消息队列;
通过所述通信组件将所述目标消息写入消息推送系统维护的目标消息队列,以供所述消息推送系统确定所述目标消息对应的目标订阅端以及供所述目标订阅端从所述目标消息队列中获取所述目标消息;
根据所述目标消息的消息主题,生成事件信息;
将所述事件信息,写入事件队列中,以供所述消息推送系统中的分发节点从所述事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将所述至少一种主题通知广播至所述消息推送系统中的至少一个连接节点,以触发所述连接节点在接收到所述主题通知且其负载的至少一个订阅端中存在已订阅任意一种目标消息主题的目标订阅端的情况下,向所述目标订阅端发出触发指令,所述触发指令中包含所述目标订阅端订阅的目标消息主题,以供所述目标订阅端从其订阅的目标消息主题对应的消息队列中获取所需的消息;所述事件队列用于存储事件信息,所述事件信息包括写入所述消息队列中的单条消息的消息主题。
29.一种分发节点,其特征在于,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
确定至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题,其中,不同消息队列中消息的消息主题不同;
通过所述通信组件从事件队列中读取未读的事件信息,所述事件队列用于存储事件信息,所述事件信息包括写入所述消息队列中的单条消息的消息主题;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将所述至少一种主题通知广播至所述至少一个连接节点,以供所述至少一个连接节点在接收到所述主题通知时从至少一个订阅端中确定已订阅所述待传输消息的目标订阅端。
30.一种连接节点,其特征在于,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
通过所述通信组件接收分发节点提供的至少一条消息队列中的至少一条待传输消息各自对应的目标消息主题以及所述分发节点广播的主题通知,所述主题通知为所述分发节点从事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并而产生的,所述事件队列用于存储事件信息,所述事件信息包括写入所述消息队列中的单条消息的消息主题;
若接收到所述主题通知且负载的至少一个订阅端中,存在已订阅任意一种目标消息主题的目标订阅端,则向所述目标订阅端发出触发指令,以触发所述目标订阅端从其已订阅的目标消息主题对应的消息队列中获取所需的消息;
其中,所述触发指令中包含所述目标订阅端已订阅的目标消息主题。
31.一种计算设备,其特征在于,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
通过所述通信组件接收触发指令,所述触发指令中包含待传输消息的消息主题;
若所述触发指令中的消息主题为已订阅主题,则基于消息主题与消息队列的对应关系,从共享的至少一个消息队列中,确定所述消息主题对应的目标消息队列;
从所述目标消息队列中获取所需的消息;
其中,所述触发指令为消息推送系统中的连接节点发出的,所述消息推送系统维护至少一条事件队列,所述事件队列用于存储事件信息,所述事件信息包括写入所述消息队列中的单条消息的消息主题;所述消息推送系统中的分发节点从所述事件队列中读取未读的事件信息;将读取到的包含同一消息主题的事件信息合并,以生成至少一种主题通知;将所述至少一种主题通知广播至所述消息推送系统中的至少一个连接节点,以使所述连接节点在接收到所述主题通知时发出所述触发指令。
32.一种存储计算机指令的计算机可读存储介质,其特征在于,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求19-27任一项所述的消息传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610497.4A CN113301558B (zh) | 2020-06-29 | 2020-06-29 | 一种消息传输方法、设备、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610497.4A CN113301558B (zh) | 2020-06-29 | 2020-06-29 | 一种消息传输方法、设备、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113301558A CN113301558A (zh) | 2021-08-24 |
CN113301558B true CN113301558B (zh) | 2022-09-27 |
Family
ID=77318209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010610497.4A Active CN113301558B (zh) | 2020-06-29 | 2020-06-29 | 一种消息传输方法、设备、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113301558B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115134419A (zh) * | 2022-06-24 | 2022-09-30 | 杭州涂鸦信息技术有限公司 | 一种数据传输方法、装置、设备和介质 |
CN115190164B (zh) * | 2022-06-24 | 2023-11-03 | 弥费科技(上海)股份有限公司 | 网络通信方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109255091A (zh) * | 2018-08-23 | 2019-01-22 | 北京城市网邻信息技术有限公司 | 共享主题消息的方法、装置、设备及计算机可读存储介质 |
CN110134523A (zh) * | 2018-12-24 | 2019-08-16 | 安徽省鼎众金融信息咨询服务有限公司 | 一种以消息系统为核心的系统架构 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2492258A (en) * | 2010-04-19 | 2012-12-26 | Ibm | Controlling message delivery in publish/subscribe messaging |
CN110557423B (zh) * | 2018-06-04 | 2022-02-11 | 珠海全志科技股份有限公司 | 一种消息推送方法及系统 |
CN110875935B (zh) * | 2018-08-30 | 2023-03-24 | 阿里巴巴集团控股有限公司 | 消息发布、处理、订阅方法、装置及系统 |
-
2020
- 2020-06-29 CN CN202010610497.4A patent/CN113301558B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109255091A (zh) * | 2018-08-23 | 2019-01-22 | 北京城市网邻信息技术有限公司 | 共享主题消息的方法、装置、设备及计算机可读存储介质 |
CN110134523A (zh) * | 2018-12-24 | 2019-08-16 | 安徽省鼎众金融信息咨询服务有限公司 | 一种以消息系统为核心的系统架构 |
Also Published As
Publication number | Publication date |
---|---|
CN113301558A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113285885B (zh) | 基于服务网格的边缘流量控制方法、设备及存储介质 | |
CN112218100A (zh) | 内容分发网络、数据处理方法、装置、设备及存储介质 | |
CN108881354B (zh) | 一种推送信息存储方法、装置、服务器和计算机存储介质 | |
CN113301558B (zh) | 一种消息传输方法、设备、系统及存储介质 | |
CN110413845B (zh) | 基于物联网操作系统的资源存储方法及装置 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN103326925B (zh) | 一种消息推送方法及装置 | |
CN114328618A (zh) | 一种缓存数据同步方法、装置、设备及存储介质 | |
CN113301079B (zh) | 一种数据的获取方法、系统、计算设备及存储介质 | |
CN114338769A (zh) | 访问请求的处理方法及装置 | |
CN107612753B (zh) | 无线信息的处理方法、装置和无线接入设备 | |
CN113553511A (zh) | 用户实时推荐方法、装置、系统、设备及可读存储介质 | |
CN106790354B (zh) | 一种防数据拥堵的通信方法及其装置 | |
CN109962834B (zh) | 信息处理方法、系统、终端和计算机存储介质 | |
EP4280561A1 (en) | Information flow identification method, network chip, and network device | |
CN103825922A (zh) | 一种数据更新方法及web服务器 | |
CN113965538B (zh) | 设备状态消息处理方法、装置及存储介质 | |
CN101459685B (zh) | 一种支持场景状态管理的移动流媒体终端 | |
CN112104888B (zh) | 一种直播用户分组的方法及系统 | |
CN114328129A (zh) | 消息发送方法、装置、设备及存储介质 | |
CN111104575B (zh) | 数据抓取方法、装置及电子设备 | |
CN114374705A (zh) | 服务集群和消息推送方法 | |
CN103152245A (zh) | 一种巡航路线控制方法及系统 | |
CN113742416A (zh) | 数据处理方法、设备、系统及存储介质 | |
CN108737522A (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 |