CN112738264A - 消息中间件消息传输方法、装置、计算机设备和存储介质 - Google Patents
消息中间件消息传输方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112738264A CN112738264A CN202011633446.XA CN202011633446A CN112738264A CN 112738264 A CN112738264 A CN 112738264A CN 202011633446 A CN202011633446 A CN 202011633446A CN 112738264 A CN112738264 A CN 112738264A
- Authority
- CN
- China
- Prior art keywords
- message
- transmitted
- information
- producers
- producer
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种消息中间件的消息传输方法、装置、计算机设备和存储介质。所述方法包括:从消息发送应用获取待传输的消息,消息携带消息接收者的地址信息;确定多个目标消息生产者;控制多个目标消息生产者分别生成待传输的消息;分别从多个目标消息生产者接收生成的多个消息;对多个消息执行裁决筛选,以确定待传输的消息;根据消息接收者的地址信息,将待传输的消息发送至消息接收者。采用本方法能够有效避免由于某一消息生产者被攻击而导致消息无法安全传输的情况,保证了消息传输的可靠性。
Description
技术领域
本申请涉及消息中间件技术领域,特别是涉及一种消息中间件消息传输方法、装置、计算机设备和存储介质。
背景技术
消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。常见的消息中间件有RabbitMq,Kafka,RocketMq等。消息中间件技术主要涉及消息生产者(Producer)、消息消费者(Consumer)、消息服务器(Broker)、队列(Queue)、消息(Message)等。消息生产者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再从队列中将消息转发给消息消费者。
消息中间件主要用于组件之间的解耦,消息生产者无需知道消息消费者的存在,反之亦然。消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
但是使用消息中间件的系统中,消息生产者有被攻击的风险,如果消息生产者被攻击,消息中的业务数据被篡改,此时消息中间件及消息消费者无法感知消息生产者被攻击以及传输的消息的异常。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升消息传输可靠性的消息中间件的消息传输方法、装置、计算机设备和存储介质。
一方面,提供一种消息中间件的消息传输方法,包括:从消息发送应用获取待传输的消息,消息携带消息接收者的地址信息;确定多个目标消息生产者;控制多个目标消息生产者分别生成待传输的消息;分别从多个目标消息生产者接收生成的多个消息;对多个消息执行裁决筛选,以确定待传输的消息;根据消息接收者的地址信息,将待传输的消息发送至消息接收者。
另一方面,提供一种消息中间件的消息传输装置,包括:待传输消息获取模块,用于从消息发送应用获取待传输的消息,消息携带消息接收者的地址信息;目标消息生产者确定模块,用于确定多个目标消息生产者;消息生产模块,用于控制多个目标消息生产者分别生成待传输的消息;消息接收模块,用于分别从多个目标消息生产者接收生成的多个消息;消息裁决模块,用于对多个消息执行裁决筛选,以确定待传输的消息;消息发送模块,用于根据消息接收者的地址信息,将待传输的消息发送至消息接收者。
另一方面,提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现步骤:从消息发送应用获取待传输的消息,消息携带消息接收者的地址信息;确定多个目标消息生产者;控制多个目标消息生产者分别生成待传输的消息;分别从多个目标消息生产者接收生成的多个消息;对多个消息执行裁决筛选,以确定待传输的消息;根据消息接收者的地址信息,将待传输的消息发送至消息接收者。
另一方面,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现步骤:从消息发送应用获取待传输的消息,消息携带消息接收者的地址信息;确定多个目标消息生产者,控制多个目标消息生产者分别生成待传输的消息;分别从多个目标消息生产者接收生成的多个消息;对多个消息执行裁决筛选,以确定待传输的消息;根据消息接收者的地址信息,将待传输的消息发送至消息接收者。
上述消息中间件的消息传输方法、装置、计算机设备和存储介质,系统部署多个异构消息生产者,在消息发送应用需要传输消息时,将待传输的消息分别通过多个目标消息生产者生成,从多个目标消息生产者生成的多个消息中裁决确定待传输的消息并发送至消息接收者。在某一目标消息生产者受到攻击而导致消息传输异常时,仍能从其余正常工作的目标消息生产者处得到的消息中裁决确定待传输的消息,从而能够有效避免由于某一消息生产者被攻击而导致消息无法安全传输的情况,保证了消息传输的可靠性。
附图说明
图1为一个实施例中消息中间件的消息传输方法的应用环境图;
图2为一个实施例中消息中间件的消息传输方法的流程示意图;
图3为一个实施例中消息路由的队列分配路径示意图;
图4为另一个实施例中消息中间件的消息传输方法的流程示意图;
图5为一个实施例中消息中间件的消息传输装置的结构框图;
图6为一个实施例中消息回复模块的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请针对现有应用消息中间件服务的系统架构中,消息生产者端被攻击而消息中间件无响应的问题,考虑将拟态防御技术应用到RabbitMq等消息中间件架构中,提供一种消息中间件的消息传输方法、装置、计算机设备和存储介质。
拟态防御技术是一种基于动态性、异构性、冗余性的架构技术,该技术能够抵御基于未知漏洞和后门的攻击。本申请拟态化的消息中间件系统部署多个异构冗余的消息生产者,这些消息生产者在内部承载环境等方面异构,基于不同的系统结构、部署或物理硬件,但是实现相同的功能。当应用需要发送消息时,具有相同业务数据内容的消息会从这些异构的消息生产者同时发出,消息裁决模块对从这些异构的消息生产者发出的多个消息进行裁决筛选,以确定一个待传输消息后,再按原来架构流程将该消息发送到消息消费者。如此,即使某一消息生产者被攻击,在消息裁决模块可以感知到异常,并裁决出正确的业务数据传输给消息消费者。
本申请提供的消息中间件的消息传输方法,可以应用于如图1所示的消息中间件系统110中。其中,消息中间件系统110分别与消息发送应用120和消息接收者130通信连接,消息中间件系统110可包括消息管理系统111、消息服务器112,以及多个异构的消息生产者113,消息管理系统111可以布置有消息生产者信息数据库。消息管理系统111提供应用程序接口(Application Programming Interface)。在某些实施例中,消息管理系统111可以进一步包括消息分发模块和消息裁决模块,以分别通过消息分发模块对消息进行复制和分发,并通过消息裁决模块对从多个消息生产者113接收的多个消息进行裁决得到待传输消息。
消息中间件系统110可以架设于消息中间件服务器中,消息中间件服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。消息中间件服务器可以包括但不限于多个异构虚拟机、多个异构云服务器,它们基于不同的操作系统,使得服务器之间具有结构差异。其中,消息服务器112可以架设于单独的消息服务器上,消息管理系统111可以架设于消息管理系统服务器上,或者,消息服务器112和消息管理系统111也可以集成于同一服务器中。各个异构消息生产者113分别架设在各自不同的服务器中。
消息发送应用120和消息接收者130均可以为应用,消息发送应用120可以部署在消息发送应用端,消息接收者130可以部署在消息接收者端,消息发送应用端和消息接收者端可以是相同或不同的服务器或终端,本申请对此不作限制。当任一应用需要发送消息时,该应用为消息发送应用120,而相应地,接收该消息的应用则为消息接收者130,因此,根据消息的收发情况,同一应用可能为消息发送应用120,也可能为消息接收者130。
消息中间件系统110中部署的消息生产者端的数量可以根据实际需要确定。为了保证每次都有预定数量(例如三个)的可以正常工作的异构消息生产者端用于消息传输,可以部署比预定数量更多的异构消息生产者端。例如,当需要确保3个目标消息生产者用于消息传输时,消息中间件系统110中可以布置4个以上的消息生产者端。例如,参见图1中,消息中间件系统110布置有Producer1、Producer2、…、ProducerX、…、ProducerN共N个异构消息生产者。
消息生产者信息数据库可以用于记录各个消息生产者端的状态信息及地址信息等。状态信息可以为主(master)状态、从(slave)状态或死亡(dead)状态。其中,主状态表示消息生产者可正常工作并且已启用,从状态表示消息生产者可正常工作但未启用,死亡状态表示消息生产者工作异常。消息裁决模块可以对生产者信息数据库中的记录的状态信息进行修改和更新,当消息裁决结果判断出消息生产者的异常时,消息裁决模块将消息生产者信息数据库中该消息生产者标记为死亡状态,并且在从状态的信息生产者中随机选择相应数量的信息生产者作为主状态,并修改其状态为主状态。以确保每次均有预定数量的消息生产者处于主(master)状态,从而确保每次有预定数量的消息生产者作为目标消息生产者参与消息的传输。参见图1中,消息中间件系统110中Producer1、Producer2、ProducerX为master状态,ProducerN为slave状态。
在需要发送消息时,消息发送应用120通过调用消息管理系统111提供的API将待传输的消息发送至消息管理系统111,消息管理系统111的消息分发模块将接收的消息分别分发至从所有异构的消息生产者113筛选的对应的多个目标消息生产者113;多个目标消息生产者113中的每个目标消息生产者113按照预定规则生成消息后发送至消息管理系统111的消息裁决模块;消息管理系统111的消息裁决模块对从多个目标消息生产者接收的多个消息执行裁决筛选,以确定待传输的消息;消息管理系统111的消息裁决模块根据消息接收者130的地址信息,将待传输的消息发送至消息接收者130。
在一个实施例中,如图2所示,提供了一种消息中间件的消息传输方法,以该方法应用于图1中的消息中间件系统110为例进行说明,包括以下步骤:
步骤S202,消息管理系统从消息发送应用获取待传输的消息,消息携带消息接收者的地址信息。
在本步骤中,消息管理系统111的消息分发模块从消息发送应用获取待传输的消息,该消息可以包括待传输的业务数据以及消息接收者的互联网协议(InternetProtocol,IP)地址、端口等信息。
步骤S204,消息管理系统确定多个目标消息生产者。
在本步骤中,消息管理系统111的消息分发模块访问生产者信息数据库,确定多个目标消息生产者及它们的IP地址等信息。
步骤S206,消息管理系统控制多个目标消息生产者分别生成待传输的消息。
在本步骤中,消息管理系统111的消息分发模块根据各个目标消息生产者的IP地址等信息,将待传输的消息分别分发至多个目标消息生产者。
如果任一消息发送失败时,则消息管理系统111的消息分发模块可以打印提示信息并重新发送该消息至对应的目标消息生产者,如果重新发送预定次数后仍发送失败,则发送失败打印告警信息,运维人员可根据告警信息手动检查处理相关问题。
在任意一个目标消息生产者接收到消息时,该目标消息生产者根据预定规则生成待传输的消息。
步骤S208,消息管理系统分别从多个目标消息生产者接收生成的多个消息。
在本步骤中,消息管理系统111的消息裁决模块分别从多个目标消息生产者中的每个目标消息生产者接收一个生成的消息,从而得到多个生成的消息。
步骤S210,消息管理系统对多个消息执行裁决筛选,以确定待传输的消息。
在本步骤中,消息管理系统111的消息裁决模块对得到的多个消息执行裁决,从多个消息中筛选确定一个正常传输的消息,作为待传输的消息。
步骤S212,消息管理系统根据消息接收者的地址信息,将待传输的消息发送至消息接收者。
在本步骤中,消息管理系统111的消息裁决模块根据待传输的消息携带的消息接收者的地址信息,将待传输的消息发送至对应的消息接收者。
上述消息中间件的消息传输方法中,消息中间件系统部署多个异构的消息生产者,在消息发送应用需要传输消息时,将待传输的消息分别通过多个目标消息生产者生成,从多个目标消息生产者生成的多个消息中裁决确定待传输的消息并发送至消息接收者。在某一目标消息生产者受到攻击而导致消息传输异常时,仍能从其余正常工作的目标消息生产者处得到的消息中裁决确定待传输的消息,从而能够有效避免由于某一消息生产者被攻击而导致消息无法安全传输的情况,保证了消息传输的可靠性。
在一个实施例中,消息中间件系统110的生产者信息数据库中记录有全部消息生产者中每个消息生产者的状态信息,如上所述的,该状态信息可以包括主状态、从状态或死亡状态。消息管理系统111通过对生产者信息数据库中的记录的状态信息进行修改和更新,确保对生产者信息数据库中具有预定数量的消息生产者的状态信息为主状态。在步骤S204之前,消息中间件的消息传输方法还包括:消息管理系统111的消息分发模块查询生产者信息数据库,从全部消息生产者中,确定状态信息为主状态的多个消息生产者,作为多个目标消息生产者。
在本实施例中,通过生产者信息数据库对消息中间件系统110中各个消息生产者的状态信息进行记录,以便选择预定数量的状态正常的消息生产者作为目标消息生产者,提升对消息的传输稳定性。
在一个实施例中,步骤S210包括:消息管理系统111的消息裁决模块比较多个消息中每个消息的业务数据部分,并根据预定裁决准则,从多个消息中裁决确定待传输的消息。
其中,裁决准则可以根据实际需要设定,例如,在一些实施例中,可以采用一致性比较、择多选择和策略参数等同步裁决方式中的一种或多种,或者在另一些实施例中,也可以采用先来先输出、追加式判决和允许更正纠错等异步裁决方式中的一种或多种组合。
在上述实施例中,通过对接收的多个消息执行裁决筛选,从而能够还原出原始待传输的信息,而筛除可能的异常信息,确保传输的信息是正确的,从而进一步提升了信息传输的稳定性。
在一个实施例中,步骤S206中多个目标消息生产者中的每个所述目标消息生产者在生成待传输的消息时,还执行:多个目标消息生产者中的每个目标消息生产者对待传输的消息进行封装,以在消息中加入目标消息生产者自身的标识信息,以得到多个封装信息;
步骤S208包括:消息管理系统111的消息裁决模块分别从多个目标消息生产者接收多个封装消息;对多个封装消息执行裁决筛选,以确定待传输的封装消息;将待传输的封装消息中包含的目标消息生产者的标识信息删除,以还原得到待传输的消息。
其中,每个消息生产者具有自身的标识信息,该标识信息用于唯一地识别该消息生产者,的例如,该标识信息可以是该消息生产者的IP地址。又例如,该标识信息可以是消息生产者的编号,而生产者信息数据库中记录各个编号的消息生产者对应的IP地址。
在本实施例中,每个目标消息生产者在对自身接收的信息进行处理时,将该目标消息生产者的标识信息写入该消息中,以封装得到封装信息。相应的,在消息裁决模块接收到封装信息时,该封装信息包含目标消息生产者的标识信息,在裁决出待传输的封装消息后,将该标识信息去掉后再发送到消息服务器。通过在消息中加入标识信息,可以便于知晓消息是从哪个消息生产者发出的,以方便后续的裁决处理。
在一个实施例中,生产者信息数据库还记录全部消息生产者中每个消息生产者的标识信息;消息中间件的消息传输方法还包括:在消息管理系统111的消息裁决模块对多个封装消息进行裁决筛选时,若从多个封装消息中检测出异常封装消息,则消息管理系统111的消息裁决模块获取异常封装消息携带的消息生产者的标识信息;消息管理系统111的消息裁决模块将生产者信息数据库中,异常封装消息携带的消息生产者的标识信息对应的消息生产者的状态信息更改为死亡状态。
在本实施例中,在裁决出异常消息时,说明该消息的消息生产者可能受到攻击等异常情况,则将其标识为死亡状态,死亡状态的消息生产者将不会被选用作为目标消息生产者,从而避免后续可能的传输异常。
进一步地,在一个实施例中,在将生产者信息数据库中,异常封装消息携带的消息生产者的标识信息对应的消息生产者的状态信息更改为死亡状态之后,还包括:消息管理系统111的消息裁决模块根据状态信息更改为死亡状态的消息生产者的数目,将生产者信息数据库中,相同数目的为从状态的消息生产者的状态信息更改为主状态。
在本实施例中,每当某数目的消息生产者被识别出异常并被标记为死亡状态时,则从现有的从状态消息生产者中随机或根据预定策略挑出相同某数目的消息生产者更改为主状态,从而确保具有预定数量的处于主状态的消息生产者可以用作目标消息生产者,保证了消息传输的稳定性。
在一个实施例中,在将生产者信息数据库中,标识信息对应的消息生产者的状态信息更改为死亡状态后,还包括:当消息生产者的状态信息更改为死亡状态时,消息管理系统111的消息裁决模块发出消息生产者为死亡状态的告警信息。通过发送告警信息,可以提醒相关运维人员对死亡状态的消息生产者执行状态恢复。当消息管理系统111的消息裁决模块确定消息生产者的状态已恢复正常时,消息管理系统111的消息裁决模块将生产者信息数据库中,已恢复正常的消息生产者的状态信息更改为从状态。
在本实施例中,发送告警信息提醒运维人员,并将恢复状态的消息生产者更新为从状态,可以保证具有充足的、可以备选调整为主状态的从状态消息生产者。
在一个实施例中,在每个目标消息生产者对待传输的消息进行封装时,该目标消息生产者还指定消息的队列指定信息,以得到多个封装信息。队列指定信息用于指定该消息将依照什么样的消息路径绑定至什么队列中。以RabbitMq为例,队列指定信息可以包括交换器(Exchange)类型和路由规则(Routingkey)。
步骤S212包括:消息管理系统111的消息裁决模块将待传输的消息发送至消息服务器;消息服务器获取接收的消息的队列指定信息;消息服务器根据队列指定信息,将消息绑定到对应的队列中;消息服务器根据队列指定信息对应的消息分配策略,以及根据消息接收者的信息,将消息从队列中转发至消息接收者。
示例地,参见图3,图3是本申请实施例公开的一种消息路由的队列分配路径示意图。消息服务器根据相应的使用规则将消息转发到对应的队列,并按照消息分配策略将队列中的消息分配给指定的消息接收者(即消息消费者)。以RabbitMq为例,消息服务器(图3中的RabbitMq Server/Broker Server)接收消息裁决模块发来的消息(Message)后,根据消息的标签(label)内携带的交换器(Exchange)类型和路由规则(Routingkey),将其发布到相应的交换器(图3中的Exchange1、Exchange2为交换器)。交换器根据交换器类型(该类型包括Direct、Topic、Headers、Fanout)及路由规则,将消息绑定到相应的队列(queue)(图3中的Queue1、Queue2为队列)。之后,消息服务器根据路由规则指定的消息分配策略将队列中的消息分配给各个消息接收者(图3中的Consumer1、Consumer2、Consumer3为消息消费者,也即消息接收者)。
以上各个实施例为消息发送应用向消息接收者发送消息的过程,在消息接收者接收到消息发送应用发送的消息后,消息接收者可能需要发送回复消息至消息发送应用。在一个实施例中,如图4所示,本申请的消息中间件的消息传输方法还包括:
步骤S402,消息管理系统通过消息服务器从消息接收者接收待传输的回复消息;回复消息携带消息发送应用的地址信息。
在本步骤中,消息接收者将回复消息发送给消息服务器,消息服务器将接收的回复消息转发至消息管理系统111的消息分发模块,该回复消息可以包括待回复的业务数据以及消息发送应用的IP地址、端口等信息。
步骤S404,消息管理系统将回复消息复制成多个回复消息,并将多个回复消息分别分发至对应的多个目标消息生产者。
步骤S406,多个目标消息生产者中的每个目标消息生产者对自身接收的回复消息进行处理。
步骤S408,消息管理系统分别从多个目标消息生产者接收处理后的多个回复消息。
步骤S410,消息管理系统对多个回复消息执行裁决筛选,以确定待传输的回复消息。
同理地,上文消息发送过程中对步骤S210的说明和示例,也可以适用于本步骤S410中。
步骤S412,消息管理系统根据消息发送应用的地址信息,将待传输的回复消息发送至消息发送应用。
在一个实施例中,步骤S402包括:消息管理系统从消息接收者接收待回复的回复消息,回复消息携带消息发送应用的地址信息以及队列指定信息;消息管理系统将所回复消息发送至消息服务器;消息服务器获取接收的回复消息的队列指定信息;消息服务器根据队列指定信息,将回复消息绑定到对应的队列中;消息服务器根据队列指定信息对应的消息分配策略,以及消息服务器根据消息接收者的信息,从队列中转出回复消息;消息管理系统从消息服务器的队列中接收回复消息。
其中,回复消息的队列指定信息可以与上述发送的消息中的队列指定信息一致,从而将回复消息以相同的路径发回至原消息发送应用。此外,其余回复消息时消息服务器的具体处理示例亦可以参见上述发送消息时消息服务器的具体处理示例。
应该理解的是,虽然图2、图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种消息中间件的消息传输装置500,包括:待传输消息获取模块501、目标消息生产者确定模块502、消息生产模块503、消息接收模块504、消息裁决模块和消息发送模块505,其中:
待传输消息获取模块501,用于从消息发送应用获取待传输的消息,消息携带消息接收者的地址信息;
目标消息生产者确定模块502,用于确定多个目标消息生产者;
消息生产模块503,用于控制多个目标消息生产者分别生成待传输的消息;
消息接收模块504,用于分别从多个目标消息生产者接收生成的多个消息;
消息裁决模块505,用于对多个消息执行裁决筛选,以确定待传输的消息;
消息发送模块506,用于根据消息接收者的地址信息,将待传输的消息发送至消息接收者。
在一个实施例中,如图6所示,消息中间件的消息传输装置500还可以包括消息回复模块510,该消息回复模块510包括:
待传输回复消息接收模块511,用于通过消息服务器从消息接收者接收待传输的回复消息;回复消息携带消息发送应用的地址信息
回复消息复制模块512,用于将回复消息复制成多个回复消息,并将多个回复消息分别分发至对应的多个目标消息生产者;
回复消息处理模块513,用于多个目标消息生产者中的每个目标消息生产者对自身接收的回复消息进行处理;
已处理回复消息接收模块514,用于分别从多个目标消息生产者接收处理后的多个回复消息;
回复消息裁决模块515,用于对多个回复消息执行裁决筛选,以确定待传输的回复消息;
回复消息发送模块516,用于根据消息发送应用的地址信息,将待传输的回复消息发送至消息发送应用。
关于消息中间件的消息传输装置500的具体限定可以参见上文中对于消息中间件的消息传输方法的限定,在此不再赘述。上述消息中间件的消息传输装置500中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图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 (14)
1.一种消息中间件的消息传输方法,所述方法包括:
从消息发送应用获取待传输的消息,所述消息携带消息接收者的地址信息;
确定多个目标消息生产者;
控制所述多个目标消息生产者分别生成待传输的所述消息;
分别从所述多个目标消息生产者接收生成的所述多个消息;
对所述多个消息执行裁决筛选,以确定待传输的所述消息;
根据所述消息接收者的地址信息,将待传输的所述消息发送至所述消息接收者。
2.根据权利要求1所述的方法,其特征在于,所述将所述多个消息分别分发至多个目标消息生产者之前,所述方法包括:
查询生产者信息数据库,所述生产者信息数据库记录全部消息生产者中每个所述消息生产者的状态信息;所述状态信息包括主状态、从状态或死亡状态;
从所述全部消息生产者中,确定所述状态信息为主状态的多个所述消息生产者,作为所述多个目标消息生产者。
3.根据权利要求2所述的方法,其特征在于,所述对所述多个消息执行裁决筛选,以确定待传输的所述消息包括:
比较所述多个消息中每条消息的业务数据部分,并根据预定裁决准则,从所述多个消息中裁决确定待传输的所述消息。
4.根据权利要求3所述的方法,其特征在于,所述裁决准则包括:
一致性比较、择多选择和策略参数中的一种或多种组合;
或者
先来先输出、追加式判决和允许更正纠错中的一种或多种组合。
5.根据权利要求2所述的方法,其特征在于,所述多个目标消息生产者中的每个所述目标消息生产者在生成待传输的所述消息时,还执行:
所述多个目标消息生产者中的每个所述目标消息生产者对待传输的所述消息进行封装,以在所述消息中加入所述目标消息生产者自身的标识信息,以得到多个封装信息;
所述分别从所述多个目标消息生产者接收生成的所述多个消息;对所述多个消息执行裁决筛选,以确定待传输的所述消息包括:
分别从所述多个目标消息生产者接收所述多个封装消息;
对所述多个封装消息执行裁决筛选,以确定待传输的所述封装消息;
将待传输的所述封装消息中包含的所述目标消息生产者的标识信息删除,以还原得到待传输的所述消息。
6.根据权利要求5所述的方法,其特征在于,所述生产者信息数据库还记录全部消息生产者中每个所述消息生产者的标识信息;
所述方法还包括:
在所述对所述多个封装消息进行裁决筛选时,若从所述多个封装消息中检测出异常封装消息,则获取所述异常封装消息携带的所述消息生产者的标识信息;
将所述生产者信息数据库中,所述异常封装消息携带的所述消息生产者的所述标识信息对应的所述消息生产者的状态信息更改为死亡状态。
7.根据权利要求6所述的方法,其特征在于,所述将所述生产者信息数据库中,所述异常封装消息携带的所述消息生产者的所述标识信息对应的所述消息生产者的状态信息更改为死亡状态之后,还包括:
根据状态信息更改为死亡状态的所述消息生产者的数目,将所述生产者信息数据库中,将为从状态的相同所述数目的所述消息生产者的状态信息更改为主状态。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述消息生产者的状态信息更改为死亡状态时,发出所述消息生产者为死亡状态的告警信息;
当确定所述消息生产者的状态已恢复正常时,将所述生产者信息数据库中,所述已恢复正常的所述消息生产者的状态信息更改为从状态。
9.根据权利要求5所述的方法,其特征在于,在每个所述目标消息生产者对待传输的所述消息进行封装时,还指定所述消息的队列指定信息,以得到多个封装信息;
所述根据所述消息接收者的信息,将待传输的所述消息发送至所述消息接收者包括:
将待传输的所述消息发送至消息服务器;
所述消息服务器获取接收的所述消息的所述队列指定信息;
所述消息服务器根据所述队列指定信息,将所述消息绑定到对应的队列中;
所述消息服务器根据所述队列指定信息对应的消息分配策略,以及根据所述消息接收者的信息,将所述消息从所述队列中转发至所述消息接收者。
10.根据权利要求1至9任意一项所述的方法,其特征在于,还包括:
通过所述消息服务器从所述消息接收者接收待传输的回复消息;所述回复消息携带所述消息发送应用的地址信息;
将所述回复消息复制成多个回复消息,并将所述多个回复消息分别分发至对应的多个目标消息生产者;
所述多个目标消息生产者中的每个所述目标消息生产者对自身接收的所述回复消息进行处理;
分别从所述多个目标消息生产者接收处理后的所述多个回复消息;
对所述多个回复消息执行裁决筛选,以确定待传输的所述回复消息;
根据所述消息发送应用的所述地址信息,将待传输的所述回复消息发送至所述消息发送应用。
11.根据权利要求10所述的方法,其特征在于,所述通过所述消息服务器从所述消息接收者接收待传输的回复消息包括:
从所述消息接收者接收待回复的回复消息,所述回复消息携带所述消息发送应用的地址信息以及队列指定信息;
将所回复消息发送至所述消息服务器;
所述消息服务器获取接收的所述回复消息的队列指定信息;
所述消息服务器根据所述队列指定信息,将所述回复消息绑定到对应的队列中;
所述消息服务器根据所述队列指定信息对应的消息分配策略,以及根据所述消息接收者的信息,从所述队列中转出所述回复消息;
从所述消息服务器的所述队列中接收所述回复消息。
12.一种消息中间件的消息传输装置,其特征在于,所述装置包括:
待传输消息获取模块,用于从消息发送应用获取待传输的消息,所述消息携带消息接收者的地址信息;
目标消息生产者确定模块,用于确定多个目标消息生产者;
消息生产模块,用于控制所述多个目标消息生产者分别生成待传输的所述消息;
消息接收模块,用于分别从所述多个目标消息生产者接收生成的所述多个消息;
消息裁决模块,用于对所述多个消息执行裁决筛选,以确定待传输的所述消息;
消息发送模块,用于根据所述消息接收者的地址信息,将待传输的所述消息发送至所述消息接收者。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011633446.XA CN112738264B (zh) | 2020-12-31 | 2020-12-31 | 消息中间件消息传输方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011633446.XA CN112738264B (zh) | 2020-12-31 | 2020-12-31 | 消息中间件消息传输方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112738264A true CN112738264A (zh) | 2021-04-30 |
CN112738264B CN112738264B (zh) | 2023-04-18 |
Family
ID=75608538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011633446.XA Active CN112738264B (zh) | 2020-12-31 | 2020-12-31 | 消息中间件消息传输方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112738264B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116471117A (zh) * | 2023-05-15 | 2023-07-21 | 嵩山实验室 | 一种拟态改造消息件、消息中间件的信息处理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614245A (zh) * | 2018-10-11 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 消息中间件的消息传递方法、装置、电子设备及存储介质 |
CN110225133A (zh) * | 2019-06-20 | 2019-09-10 | 恒生电子股份有限公司 | 消息发送方法、节点、装置、系统及相关设备 |
CN111666162A (zh) * | 2020-04-30 | 2020-09-15 | 平安科技(深圳)有限公司 | 分布式消息传输方法、装置、计算机设备及存储介质 |
CN111740872A (zh) * | 2020-05-06 | 2020-10-02 | 北京百度网讯科技有限公司 | 消息传递测试方法、装置、电子设备和存储介质 |
CN111800354A (zh) * | 2019-04-08 | 2020-10-20 | 中移(苏州)软件技术有限公司 | 消息处理方法及装置、消息处理设备及存储介质 |
-
2020
- 2020-12-31 CN CN202011633446.XA patent/CN112738264B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614245A (zh) * | 2018-10-11 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 消息中间件的消息传递方法、装置、电子设备及存储介质 |
CN111800354A (zh) * | 2019-04-08 | 2020-10-20 | 中移(苏州)软件技术有限公司 | 消息处理方法及装置、消息处理设备及存储介质 |
CN110225133A (zh) * | 2019-06-20 | 2019-09-10 | 恒生电子股份有限公司 | 消息发送方法、节点、装置、系统及相关设备 |
CN111666162A (zh) * | 2020-04-30 | 2020-09-15 | 平安科技(深圳)有限公司 | 分布式消息传输方法、装置、计算机设备及存储介质 |
CN111740872A (zh) * | 2020-05-06 | 2020-10-02 | 北京百度网讯科技有限公司 | 消息传递测试方法、装置、电子设备和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116471117A (zh) * | 2023-05-15 | 2023-07-21 | 嵩山实验室 | 一种拟态改造消息件、消息中间件的信息处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112738264B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110602239B (zh) | 一种区块链信息存储方法及相关设备 | |
CN107833139B (zh) | 交易数据处理方法、装置、计算机设备及存储介质 | |
US7685227B2 (en) | Message forwarding backup manager in a distributed server system | |
CN107886328B (zh) | 交易处理方法、装置、计算机设备及存储介质 | |
US11381383B2 (en) | Methods and apparatuses for processing service using blockchain | |
CN110310080B (zh) | 数据流转方法、装置、计算机设备及存储介质 | |
CN108388438B (zh) | 系统基表更新方法、装置、计算机设备和存储介质 | |
CN111159233B (zh) | 分布式缓存方法、系统、计算机设备以及存储介质 | |
CN112738264B (zh) | 消息中间件消息传输方法、装置、计算机设备和存储介质 | |
CN110597673A (zh) | 存储系统的容灾方法、装置、设备及计算机可读存储介质 | |
CN111311254A (zh) | 一种基于区块链的业务处理方法、装置和系统 | |
CN110602234B (zh) | 区块链网络节点管理方法、装置、设备以及存储介质 | |
CN108376154B (zh) | 系统基表同步方法、装置、计算机设备和存储介质 | |
CN113542405B (zh) | 基于区块链的网络通信系统、方法、设备及存储介质 | |
CN110933022A (zh) | 区块处理方法、装置、计算机设备及存储介质 | |
CN109460182B (zh) | 一种数据存储、读取方法及装置 | |
CN111382976B (zh) | 预警数据处理方法、装置、计算机设备和存储介质 | |
CN113010306A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN112070585A (zh) | 订单状态统一管理方法、装置、计算机设备和存储介质 | |
CN114584575B (zh) | 船舶管理体系中的船岸通信方法及系统 | |
CN114490681A (zh) | 服务请求响应方法、装置以及服务器集群 | |
CN113010600B (zh) | 一种基于区块链的数据管理系统、方法、相关设备及介质 | |
CN112688818B (zh) | 数据发送方法、装置、电子设备及可读存储介质 | |
CN111131198B (zh) | 网络安全策略配置的更新方法及装置 | |
CN110489208B (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 |