CN110708247B - 消息路由方法、装置、计算机设备和存储介质 - Google Patents
消息路由方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110708247B CN110708247B CN201910925335.7A CN201910925335A CN110708247B CN 110708247 B CN110708247 B CN 110708247B CN 201910925335 A CN201910925335 A CN 201910925335A CN 110708247 B CN110708247 B CN 110708247B
- Authority
- CN
- China
- Prior art keywords
- message
- subscription
- receiving end
- label
- queue
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
- H04L45/507—Label distribution
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Abstract
本申请涉及一种消息路由方法、装置、计算机设备和存储介质,其中方法通过获取消息提供端的待发送消息,并查找与待发送消息的消息主题相同的消息主题下,与待发送消息的消息标签相对应的消息队列,并在查找到对应的消息队列时将待发送消息保存在该消息队列中,从而在获取消息接收端的消息订阅请求后,可以通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向消息接收端发送消息,使得消息能够根据消息标签及对应的消息队列进行路由,从而避免消息被相同消息主题下不同分支消费者误消费的情况。
Description
技术领域
本申请涉及信息通信技术领域,特别是涉及一种消息路由方法、装置、计算机设备和存储介质。
背景技术
随着互联网技术的发展,互联网中消息的传输被广泛关注。消息系统可以为用户提供消息发布订阅、消息轨迹查询、定时(延时)消息、资源统计、监控报警等一系列消息服务。
然而,现有的消息系统,比如开源的RocketMQ(消息中间件),在消息消费时,通常只能按照topic(话题)进行过滤。如果两个环境的消费者消费的topic相同,但是两个环境如果部署不同分支的业务项目,则会因为现有的RocketMQ不能区分不同分支的业务项目,而导致不同分支发送的消息可能会被相同topic下其他分支消费者误消费的情况。因此,现有的消息系统,存在消息容易被误消费的情况。
发明内容
基于此,有必要针对上述消息容易被误消费的问题,提供一种消息路由方法、装置、计算机设备和存储介质。
为了实现上述目的,一方面,本申请实施例提供了一种消息路由方法,所述方法包括:
获取待发送消息,其中,待发送消息中携带有消息主题和消息标签;
若查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下与消息标签相对应的消息队列中,其中,消息队列具有唯一的标识;
获取接收端的消息订阅请求,其中,消息订阅请求中包括订阅的消息主题和订阅的消息队列的标识;
通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向接收端发送消息。
在其中一个实施例中,上述方法还包括:若没有查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下的基准消息队列中。
在其中一个实施例中,消息订阅请求的生成方式包括:在接收端启动时,根据接收端的属性信息判断接收端是否配置了订阅标签;当确定接收端配置了订阅标签时,查找与订阅标签相对应的消息队列;若查找到与订阅标签相对应的消息队列,则向接收端返回与订阅标签相对应的消息队列的标识,以使接收端根据与订阅标签相对应的消息队列的标识生成消息订阅请求。
在其中一个实施例中,上述方法还包括:若没有查找到与订阅标签相对应的消息队列,则通过轮询算法为订阅标签分配一个消息队列;向接收端返回为订阅标签分配的消息队列的标识,以使接收端根据分配的消息队列的标识生成消息订阅请求。
在其中一个实施例中,在通过轮询算法为订阅标签分配一个消息队列之后,还包括:对为订阅标签分配的消息队列进行初始化。
在其中一个实施例中,上述方法还包括:当确定接收端没有配置订阅标签时,则向接收端返回基准消息队列的标识,以使接收端根据基准消息队列的标识生成消息订阅请求。
在其中一个实施例中,获取待发送消息之前,还包括:接收对待发送消息的配置信息,其中,配置信息中包括消息标签。
另一方面,本申请实施例提供了一种消息路由装置,包括:消息获取模块、消息存储模块、消息订阅模块和消息发送模块,其中:
消息获取模块,用于获取待发送消息,其中,待发送消息中携带有消息主题和消息标签;
消息存储模块,用于若查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下与消息标签相对应的消息队列中,其中,消息队列具有唯一的标识;
消息订阅模块,用于获取接收端的消息订阅请求,其中,消息订阅请求中包括订阅的消息主题和订阅的消息队列的标识;
消息发送模块,用于通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向接收端发送消息。
又一方面,本申请实施例提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
再一方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法的步骤。
上述消息路由方法、装置、计算机设备和存储介质,通过获取消息提供端的待发送消息,并查找与待发送消息的消息主题相同的消息主题下,与待发送消息的消息标签相对应的消息队列,并在查找到对应的消息队列时将待发送消息保存在该消息队列中,从而在获取消息接收端的消息订阅请求后,可以通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向消息接收端发送消息,使得消息能够根据消息标签及对应的消息队列进行路由,从而避免消息被相同消息主题下不同分支消费者误消费的情况。
附图说明
图1为一个实施例中消息路由方法的应用环境图;
图2为一个实施例中消息路由方法的流程示意图;
图3为另一个实施例中消息路由方法的流程示意图;
图4为一个实施例中消息订阅请求的生成步骤的流程示意图;
图5为又一个实施例中消息路由方法的流程示意图;
图6为一个实施例中消息路由装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的消息路由方法,可以应用于如图1所示的应用环境中。该应用环境包括消息客户端(包括消息提供端102和多个消息接收端104)和消息服务端106,其中,消息提供端102和消息接收端104分别通过网络连接到消息服务端106中。消息服务端106通过获取消息提供端102的待发送消息,并查找与待发送消息的消息主题相同的消息主题下,与待发送消息的消息标签相对应的消息队列,并在查找到对应的消息队列时将待发送消息保存在该消息队列中;消息服务端106还可以获取消息接收端104的消息订阅请求,并通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向消息接收端104发送消息,使得消息能够根据消息标签及对应的消息队列进行路由,从而避免消息被相同消息主题下不同分支消费者误消费的情况。
其中,消息客户端也即消息提供端102和消息接收端104,可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,消息服务端106则可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种消息路由方法,以该方法应用于图1中的消息服务端为例进行说明,包括以下步骤:
步骤202,获取待发送消息,待发送消息中携带有消息主题和消息标签。
其中,待发送消息可以理解为是由消息提供端配置的业务项目,例如,可以是由消息提供端配置的某一HTTP(Hyper Text Transport Protocol,超文本传输协议)请求业务。具体的,待发送消息中携带有消息提供端为其配置的消息主题和消息标签,其中,消息主题也就是消息对应的话题(topic),消息标签则是针对同一topic下设置的用于区分不同环境或不同分支的业务项目的标识。在本实施例中,为了避免消息被误消费,实现对消息进行有效路由,因此,在消息提供端配置完待发送消息后,消息服务端则获取该待发送消息,并通过后续步骤将其进行发布。
步骤204,判断是否查找到相同消息主题下与消息标签相对应的消息队列。
其中,消息队列(Queue)是在消息传输过程中保存消息的容器,对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程则可以从消息队列中读取消息,从而保证消息的传递。在本实施例中,消息服务端可以具有多个消息主题,而每个消息主题(topic)下又可以根据不同环境或不同分支的业务项目分配对应的消息队列,又由于消息标签是针对同一topic下设置的用于区分不同环境或不同分支的业务项目的标识,因此,消息标签和消息队列之间存在一定的对应关系,具体的,消息队列具有唯一的标识,如消息队列的ID(Identity document,身份标识号),从而可以建立消息队列的ID和消息标签之间的映射关系,因此,与消息标签相对应的消息队列用于存储对应业务项目的消息。当消息服务端获取到待发送消息后,则根据待发送消息中携带的消息主题和消息标签,查找相同消息主题下与消息标签相对应的消息队列,若查找到则执行步骤206,否则执行步骤208。
步骤206,将待发送消息保存在消息主题下与消息标签相对应的消息队列中。
具体的,如果消息服务端查找到相同消息主题下与消息标签相对应的消息队列,则将该待发送消息保存在查找到的消息队列中,从而完成消息的发布,以便于后续通过消息队列进行消息路由。
步骤208,将待发送消息保存在消息主题下的基准消息队列中。
其中,基准消息队列是指设置在消息主题下但不存在匹配消息标签的一个消息队列,也即该基准消息队列中存储的消息与业务项目无关,该基准消息队列同样具有唯一的ID。在本实施例中,如果消息服务端在相同消息主题下没有查找到与待发送消息的消息标签相对应的消息队列,则将该待发送消息保存在相同消息主题下的基准消息队列中,从而完成消息的发布。
步骤210,获取接收端的消息订阅请求。
其中,消息订阅请求中包括消息接收端(以下简称接收端)订阅的消息主题和订阅的消息队列的标识,因此,消息服务端根据接收端的消息订阅请求进行消息路由。
步骤212,通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向接收端发送消息。
具体的,消息服务端根据接收端的消息订阅请求,查找与接收端订阅的消息主题相同的消息主题,并通过该消息主题下与订阅的消息队列的标识相对应的消息队列向接收端发送消息。以实现通过消息标签及对应的消息队列进行路由,使得接收端只能接收到订阅的消息主题下感兴趣的消息队列(也即订阅的消息队列)中的消息,而不能接收到该主题下其他消息队列的消息,从而避免消息误消费的情况。
上述消息路由方法,通过获取消息提供端的待发送消息,并查找与待发送消息的消息主题相同的消息主题下,与待发送消息的消息标签相对应的消息队列,并在查找到对应的消息队列时将待发送消息保存在该消息队列中,从而在获取消息接收端的消息订阅请求后,可以通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向消息接收端发送消息,使得消息能够根据消息标签及对应的消息队列进行路由,从而避免消息被相同消息主题下不同分支消费者误消费的情况。
在一个实施例中,如图3所示,在获取待发送消息之前,上述方法还可以包括如下步骤:
步骤200,接收对待发送消息的配置信息。
其中,配置信息中包括对待发送消息配置的消息标签。具体的,以待发送消息为某一HTTP请求业务为例进行说明,则消息提供端在配置该HTTP请求业务时,通过消息服务端在该HTTP请求业务的消息头中进行消息标签的配置,即消息服务端根据该HTTP请求业务的不同环境或不同分支在HTTP请求业务的消息头中配置对应的业务标识,也即消息标签,因此,当HTTP请求调用时,会将消息标签的配置信息设置到上下文线程变量中,从而当消息提供端启动时,消息服务端能够获取上下文中的标签信息。基于消息标签与消息队列的关系,在对消息进行消息标签的配置后,使得消息能够根据消息标签所对应的消息队列进行路由,从而避免不同环境或不同分支下消息消费的相互干扰。
在一个实施例中,如图4所示,上述消息订阅请求的生成方式可以包括如下步骤:
步骤402,在接收端启动时,根据接收端的属性信息判断接收端是否配置了订阅标签。
其中,订阅标签是指接收端通过消息服务端设置的订阅的业务项目的参数,可以包括接收端设置的感兴趣的消息主题以及感兴趣的消息主题下不同环境或不同分支的业务项目的标识。接收端的属性信息包括但不限于接收端的硬件参数、安全参数、网络参数以及业务参数等。当接收端启动时,消息服务端则可以根据接收端的属性信息对其进行解析,以判断接收端是否配置了订阅标签,当从接收端的属性信息中解析出相应的订阅标签时,则可以确定接收端配置了订阅标签,此时则执行步骤404,否则执行步骤410。
步骤404,查找与订阅标签相对应的消息队列。
在本实施例中,消息服务端存储了消息主题下不同环境或不同分支的业务项目的标识与消息队列的对应关系,因此,当确定接收端配置了订阅标签时,则查找与订阅标签中相同的消息主题下与业务项目的标识所对应的消息队列,如果查找到与相对应的消息队列则执行步骤406,否则执行步骤408。
步骤406,向接收端返回与订阅标签相对应的消息队列的标识,以使接收端根据与订阅标签相对应的消息队列的标识生成消息订阅请求。
具体的,当查找到相对应的消息队列时,则获取查找到的消息队列的标识,并向接收端返回查找到的与订阅标签相对应的消息队列的标识,以使接收端根据与订阅标签相对应的消息队列的标识生成消息订阅请求。使得消息能够根据消息订阅请求中所对应的消息队列进行路由,从而避免不同环境或不同分支下消息消费的相互干扰。
步骤408,则通过轮询算法为订阅标签分配一个消息队列,向接收端返回为订阅标签分配的消息队列的标识,以使接收端根据分配的消息队列的标识生成消息订阅请求。
具体的,当没有查找到相对应的消息队列时,则在订阅标签中相同的消息主题下,通过轮询算法为该订阅标签分配一个消息队列,并对该分配的消息队列进行初始化后,向接收端返回分配的消息队列的标识,以使接收端根据订阅标签以及分配的消息队列的标识生成消息订阅请求。使得消息能够根据消息订阅请求中所对应的消息队列进行路由,从而避免不同环境或不同分支下消息消费的相互干扰。
步骤410,向接收端返回基准消息队列的标识,以使接收端根据基准消息队列的标识生成消息订阅请求。
当从接收端的属性信息中没有解析出相应的订阅标签时,则确定接收端没有配置订阅标签,因此,向接收端返回基准消息队列的标识,使得接收端根据基准消息队列的标识生成消息订阅请求,因此,接收端只能接收到该基准消息队列中的消息,而不能接收其他消息队列中的消息,从而避免消息的相互干扰。
在一个实施例中,如图5所示,以下通过一个具体的实施例进一步说明本申请的方法,具体包括如下步骤:
步骤501,消息提供端通过消息服务端对待发送消息进行消息标签的配置。
步骤502,消息提供端启动时,消息服务端获取待发送消息。
步骤503,判断待发送消息中是否存在消息标签,将待发送消息保存在对应的Queue中。
若存在,则查找与消息标签相对应的Queue,将待发送消息保存在对应的Queue中。若不存在消息标签或没有查找到与消息标签相对应的Queue,则将待发送消息保存在基准Queue中。
步骤504,消息接收端通过消息服务端进行订阅标签的配置。
步骤505,消息接收端启动时,判断消息接收端是否配置了订阅标签。
当确定配置了订阅标签时,查找与订阅标签相对应的Queue,向消息接收端返回查找到的Queue的ID。当没有查找与订阅标签相对应的Queue时,则为其分配一个Queue,向消息接收端返回分配的Queue的ID。当确定没有配置订阅标签时,则向消息接收端返回基准Queue的ID。
步骤506,根据订阅标签相对应的Queue,向消息接收端返回对应的Queue的ID。
步骤507、消息接收端根据返回的Queue的ID生成消息订阅请求。
步骤508,消息服务端获取消息接收端的消息订阅请求。
步骤509,消息服务端查找与消息订阅请求中订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列即Queue。
步骤510,通过查找到的消息队列向接收端发送消息。
从而使得消息能够按照标签进行路由,即不同标签的消息只能被拥有相同标签的接收端接收,能够避免开源rocketmq情况下相同topic不同分支消费者误消费的问题。
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种消息路由装置,包括:消息获取模块601、消息存储模块602、消息订阅模块603和消息发送模块604,其中:
消息获取模块601,用于获取待发送消息,其中,待发送消息中携带有消息主题和消息标签;
消息存储模块602,用于若查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下与消息标签相对应的消息队列中,其中,消息队列具有唯一的标识;
消息订阅模块603,用于获取接收端的消息订阅请求,其中,消息订阅请求中包括订阅的消息主题和订阅的消息队列的标识;
消息发送模块604,用于通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向接收端发送消息。
在一个实施例中,消息存储模块602还用于在没有查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下的基准消息队列中。
在一个实施例中,还包括消息订阅请求生成模块,用于在接收端启动时,根据接收端的属性信息判断接收端是否配置了订阅标签;当确定接收端配置了订阅标签时,查找与订阅标签相对应的消息队列;若查找到与订阅标签相对应的消息队列,则向接收端返回与订阅标签相对应的消息队列的标识,以使接收端根据与订阅标签相对应的消息队列的标识生成消息订阅请求。
在一个实施例中,上述消息订阅请求生成模块还用于:若没有查找到与订阅标签相对应的消息队列,则通过轮询算法为订阅标签分配一个消息队列;向接收端返回为订阅标签分配的消息队列的标识,以使接收端根据分配的消息队列的标识生成消息订阅请求。
在其中一个实施例中,在通过轮询算法为订阅标签分配一个消息队列之后,还包括对为订阅标签分配的消息队列进行初始化。
在一个实施例中,上述消息订阅请求生成模块还用于:当确定接收端没有配置订阅标签时,则向接收端返回基准消息队列的标识,以使接收端根据基准消息队列的标识生成消息订阅请求。
在一个实施例中,还包括消息标签配置模块,用于接收对待发送消息的配置信息,其中,配置信息中包括消息标签。
关于消息路由装置的具体限定可以参见上文中对于消息路由方法的限定,在此不再赘述。上述消息路由装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待发送消息以及对应的路由数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种消息路由方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取待发送消息,其中,待发送消息中携带有消息主题和消息标签;
若查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下与消息标签相对应的消息队列中,其中,消息队列具有唯一的标识;
获取接收端的消息订阅请求,其中,消息订阅请求中包括订阅的消息主题和订阅的消息队列的标识;
通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向接收端发送消息。
在一个实施例中,上述方法还包括:若没有查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下的基准消息队列中。
在一个实施例中,消息订阅请求的生成方式包括:在接收端启动时,根据接收端的属性信息判断接收端是否配置了订阅标签;当确定接收端配置了订阅标签时,查找与订阅标签相对应的消息队列;若查找到与订阅标签相对应的消息队列,则向接收端返回与订阅标签相对应的消息队列的标识,以使接收端根据与订阅标签相对应的消息队列的标识生成消息订阅请求。
在一个实施例中,上述方法还包括:若没有查找到与订阅标签相对应的消息队列,则通过轮询算法为订阅标签分配一个消息队列;向接收端返回为订阅标签分配的消息队列的标识,以使接收端根据分配的消息队列的标识生成消息订阅请求。
在一个实施例中,在通过轮询算法为订阅标签分配一个消息队列之后,还包括:对为订阅标签分配的消息队列进行初始化。
在一个实施例中,上述方法还包括:当确定接收端没有配置订阅标签时,则向接收端返回基准消息队列的标识,以使接收端根据基准消息队列的标识生成消息订阅请求。
在一个实施例中,获取待发送消息之前,还包括:接收对待发送消息的配置信息,其中,配置信息中包括消息标签。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待发送消息,其中,待发送消息中携带有消息主题和消息标签;
若查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下与消息标签相对应的消息队列中,其中,消息队列具有唯一的标识;
获取接收端的消息订阅请求,其中,消息订阅请求中包括订阅的消息主题和订阅的消息队列的标识;
通过与订阅的消息主题相同的消息主题下与订阅的消息队列的标识相对应的消息队列,向接收端发送消息。
在一个实施例中,上述方法还包括:若没有查找到消息主题下与消息标签相对应的消息队列,则将待发送消息保存在消息主题下的基准消息队列中。
在一个实施例中,消息订阅请求的生成方式包括:在接收端启动时,根据接收端的属性信息判断接收端是否配置了订阅标签;当确定接收端配置了订阅标签时,查找与订阅标签相对应的消息队列;若查找到与订阅标签相对应的消息队列,则向接收端返回与订阅标签相对应的消息队列的标识,以使接收端根据与订阅标签相对应的消息队列的标识生成消息订阅请求。
在一个实施例中,上述方法还包括:若没有查找到与订阅标签相对应的消息队列,则通过轮询算法为订阅标签分配一个消息队列;向接收端返回为订阅标签分配的消息队列的标识,以使接收端根据分配的消息队列的标识生成消息订阅请求。
在一个实施例中,在通过轮询算法为订阅标签分配一个消息队列之后,还包括:对为订阅标签分配的消息队列进行初始化。
在一个实施例中,上述方法还包括:当确定接收端没有配置订阅标签时,则向接收端返回基准消息队列的标识,以使接收端根据基准消息队列的标识生成消息订阅请求。
在一个实施例中,获取待发送消息之前,还包括:接收对待发送消息的配置信息,其中,配置信息中包括消息标签。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种消息路由方法,其特征在于,所述方法包括:
获取待发送消息,所述待发送消息中携带有消息提供端配置的消息主题和消息标签,所述消息标签是针对同一消息主题下配置的用于区分不同环境或不同分支的待发送消息的标识;
若查找到所述消息主题下与所述消息标签相对应的消息队列,则将所述待发送消息保存在所述消息主题下与所述消息标签相对应的消息队列中,所述消息队列具有唯一的标识,所述消息队列的标识与所述消息标签之间具有映射关系;
获取接收端的消息订阅请求,所述消息订阅请求中包括订阅的消息主题和订阅的消息队列的标识;
通过与订阅的消息主题相同的消息主题下与所述订阅的消息队列的标识相对应的消息队列,向所述接收端发送消息。
2.根据权利要求1所述的消息路由方法,其特征在于,所述方法还包括:
若没有查找到所述消息主题下与所述消息标签相对应的消息队列,则将所述待发送消息保存在所述消息主题下的基准消息队列中。
3.根据权利要求1所述的消息路由方法,其特征在于,所述消息订阅请求的生成方式包括:
在接收端启动时,根据所述接收端的属性信息判断所述接收端是否配置了订阅标签;
当确定所述接收端配置了所述订阅标签时,查找与所述订阅标签相对应的消息队列;
若查找到与所述订阅标签相对应的消息队列,则向所述接收端返回与所述订阅标签相对应的消息队列的标识,以使所述接收端根据与所述订阅标签相对应的消息队列的标识生成所述消息订阅请求。
4.根据权利要求3所述的消息路由方法,其特征在于,所述方法还包括:
若没有查找到与所述订阅标签相对应的消息队列,则通过轮询算法为所述订阅标签分配一个消息队列;
向所述接收端返回为所述订阅标签分配的所述消息队列的标识,以使所述接收端根据分配的所述消息队列的标识生成所述消息订阅请求。
5.根据权利要求4所述的消息路由方法,其特征在于,所述通过轮询算法为所述订阅标签分配一个消息队列之后,还包括:
对为所述订阅标签分配的所述消息队列进行初始化。
6.根据权利要求3所述的消息路由方法,其特征在于,所述方法还包括:
当确定所述接收端没有配置所述订阅标签时,则向所述接收端返回基准消息队列的标识,以使所述接收端根据所述基准消息队列的标识生成所述消息订阅请求。
7.根据权利要求1至6任一项所述的消息路由方法,其特征在于,所述获取待发送消息之前,还包括:
接收对所述待发送消息的配置信息,所述配置信息中包括所述消息标签。
8.一种消息路由装置,其特征在于,所述装置包括:
消息获取模块,用于获取待发送消息,所述待发送消息中携带有消息提供端配置的消息主题和消息标签,所述消息标签是针对同一消息主题下配置的用于区分不同环境或不同分支的待发送消息的标识;
消息存储模块,用于若查找到所述消息主题下与所述消息标签相对应的消息队列,则将所述待发送消息保存在所述消息主题下与所述消息标签相对应的消息队列中,所述消息队列具有唯一的标识,所述消息队列的标识与所述消息标签之间具有映射关系;
消息订阅模块,用于获取接收端的消息订阅请求,所述消息订阅请求中包括订阅的消息主题和订阅的消息队列的标识;
消息发送模块,用于通过与订阅的消息主题相同的消息主题下与所述订阅的消息队列的标识相对应的消息队列,向所述接收端发送消息。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925335.7A CN110708247B (zh) | 2019-09-27 | 2019-09-27 | 消息路由方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925335.7A CN110708247B (zh) | 2019-09-27 | 2019-09-27 | 消息路由方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110708247A CN110708247A (zh) | 2020-01-17 |
CN110708247B true CN110708247B (zh) | 2022-03-22 |
Family
ID=69196793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910925335.7A Active CN110708247B (zh) | 2019-09-27 | 2019-09-27 | 消息路由方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110708247B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381986B (zh) * | 2020-03-10 | 2024-04-16 | 北京奇艺世纪科技有限公司 | 消息传输方法、系统、装置、电子设备及可读存储介质 |
CN111949418B (zh) * | 2020-07-10 | 2023-10-24 | 北京思特奇信息技术股份有限公司 | 一种订阅消息处理方法和装置 |
CN111988315A (zh) * | 2020-08-19 | 2020-11-24 | 青岛易来智能科技股份有限公司 | 一种同步调用方法、装置、电子设备、系统和存储介质 |
US20220191018A1 (en) * | 2020-12-14 | 2022-06-16 | International Business Machines Corporation | Key rotation on a publish-subscribe system |
CN114710311B (zh) * | 2022-02-11 | 2024-01-02 | 浙江高信技术股份有限公司 | 一种多项目消息管理方法和系统 |
CN115878352B (zh) * | 2023-03-08 | 2023-06-16 | 深圳市思为软件技术有限公司 | 一种基于预先订阅的事件投递处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101193077A (zh) * | 2006-11-30 | 2008-06-04 | 国际商业机器公司 | 用于订阅匹配的方法和系统 |
CN106230922A (zh) * | 2016-07-28 | 2016-12-14 | 上海斐讯数据通信技术有限公司 | 一种消息订阅方法、消息生产单元及消息接收单元 |
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
CN107332787A (zh) * | 2017-06-29 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种消息分发方法和装置 |
CN108881651A (zh) * | 2018-05-30 | 2018-11-23 | 平安科技(深圳)有限公司 | 呼叫平台的数据处理方法、装置、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112039942A (zh) * | 2017-08-29 | 2020-12-04 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
CN109756552B (zh) * | 2018-08-22 | 2020-03-31 | 比亚迪股份有限公司 | 一种乘客信息系统消息分发方法和装置及乘客信息系统 |
-
2019
- 2019-09-27 CN CN201910925335.7A patent/CN110708247B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101193077A (zh) * | 2006-11-30 | 2008-06-04 | 国际商业机器公司 | 用于订阅匹配的方法和系统 |
CN106230922A (zh) * | 2016-07-28 | 2016-12-14 | 上海斐讯数据通信技术有限公司 | 一种消息订阅方法、消息生产单元及消息接收单元 |
CN106953901A (zh) * | 2017-03-10 | 2017-07-14 | 重庆邮电大学 | 一种提高消息传递性能的集群通信系统及其方法 |
CN107332787A (zh) * | 2017-06-29 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种消息分发方法和装置 |
CN108881651A (zh) * | 2018-05-30 | 2018-11-23 | 平安科技(深圳)有限公司 | 呼叫平台的数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110708247A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110708247B (zh) | 消息路由方法、装置、计算机设备和存储介质 | |
CN109474578B (zh) | 报文消息校验方法、装置、计算机设备和存储介质 | |
CN109492017B (zh) | 业务信息查询处理方法、系统、计算机设备和存储介质 | |
CN115328663B (zh) | 基于PaaS平台进行资源调度的方法、装置、设备和存储介质 | |
CN110620812B (zh) | 交互信息的推送方法、装置、计算机设备和存储介质 | |
CN111193716B (zh) | 业务数据调用方法、装置、计算机设备和存储介质 | |
CN109923847B (zh) | 调用链路的发现方法、装置、设备及存储介质 | |
CN108834086B (zh) | 短信发送的方法、装置、计算机设备和存储介质 | |
CN108959384B (zh) | 网页数据获取方法、装置、计算机设备和存储介质 | |
CN110213392B (zh) | 数据分发方法、装置、计算机设备和存储介质 | |
CN110764700A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN110908778B (zh) | 任务部署方法、系统和存储介质 | |
CN108446172B (zh) | 数据调取方法、装置、计算机设备和存储介质 | |
CN112491659B (zh) | 一种流量回放测试方法、装置、计算机设备和存储介质 | |
CN112612595A (zh) | 微服务调用关系建立方法、装置、计算机设备和存储介质 | |
CN110602169A (zh) | 服务调用方法、装置、计算机设备和存储介质 | |
CN112612988A (zh) | 页面处理方法、装置、计算机设备及存储介质 | |
CN114153626A (zh) | 一种服务集成过程抽象的方法、装置和计算机设备 | |
CN113127192A (zh) | 一种多个服务共享同一个gpu的方法、系统、设备及介质 | |
CN114024972A (zh) | 一种长连接通信方法、系统、装置、设备及存储介质 | |
CN111752681A (zh) | 请求处理方法、装置、服务器和计算机可读存储介质 | |
CN110531984B (zh) | 代码编译方法、装置、系统、计算机设备和存储介质 | |
CN112087335A (zh) | 流量实验方法、装置及存储介质 | |
CN111224939B (zh) | 任务请求的拦截方法、装置、计算机设备和存储介质 | |
CN114281263A (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 |