CN113961376A - 一种消息中间件的切换方法和装置 - Google Patents
一种消息中间件的切换方法和装置 Download PDFInfo
- Publication number
- CN113961376A CN113961376A CN202111284093.1A CN202111284093A CN113961376A CN 113961376 A CN113961376 A CN 113961376A CN 202111284093 A CN202111284093 A CN 202111284093A CN 113961376 A CN113961376 A CN 113961376A
- Authority
- CN
- China
- Prior art keywords
- message
- middleware
- accessed
- information
- configuration
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000011068 loading method Methods 0.000 claims abstract description 51
- 238000004458 analytical method Methods 0.000 claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 9
- 238000011161 development Methods 0.000 abstract description 10
- 238000012423 maintenance Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 238000010276 construction Methods 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000003999 initiator Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 241000283973 Oryctolagus cuniculus Species 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种消息中间件的切换方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:加载待接入消息中间件的配置文件,通过适配器对配置文件中的多种配置信息进行解析,得到与每种配置信息对应的解析结果,根据配置文件中所含的待接入消息中间件的类型信息,查找与待接入消息中间件对应的中间件构建器,由中间件构建器根据解析结果,构建待接入消息中间件,以将已有消息中间件切换为待接入消息中间件。该实施方式能够根据项目需要灵活切换消息中间件,不需要修改原来实现的大批量的接口和消息发送器,减少维护和开发工作量,使项目变得简洁轻量,降低技术开发难度。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种消息中间件的切换方法和装置。
背景技术
对于互联网时代总是离不开各个业务部门甚至不同行业的数据交换对接,达到各用自己所长的目的,但是彼此之间所使用的技术壁垒导致了所选技术方案不同,通常采用系统解耦的方式,这是使消息中间件成为了首选。目前通常是直接依赖和实现目前阶段使用的消息中间件类型,需要一种消息中间件就对接一种,一旦切换消息中间件就会导致大量的监听和消息推送服务的修改,不断地增加消息中间件框架或者是为了部署切换mq(消息队列)框架,但是由于框架不同,切换需要修改原来实现的大批量的接口和消息发送器。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
需要不断地增加消息中间件框架或修改原来实现的大批量的接口和消息发送器,维护和开发工作量大,提高了技术开发难度,且会造成项目臃肿。
发明内容
有鉴于此,本发明实施例提供一种消息中间件的切换方法和装置,能够根据项目需要灵活切换消息中间件,不需要修改原来实现的大批量的接口和消息发送器,减少维护和开发工作量,使项目变得简洁轻量,降低技术开发难度。
为实现上述目的,根据本发明实施例的一个方面,提供了一种消息中间件的切换方法。
一种消息中间件的切换方法,包括:加载待接入消息中间件的配置文件,所述配置文件包括所述待接入消息中间件的类型信息以及多种配置信息;通过适配器对所述配置文件中的所述多种配置信息进行解析,得到与每种所述配置信息对应的解析结果;根据所述待接入消息中间件的类型信息,查找与所述待接入消息中间件对应的中间件构建器;由所述中间件构建器根据所述解析结果,构建所述待接入消息中间件,以将已有消息中间件切换为所述待接入消息中间件。
可选地,所述加载待接入消息中间件的配置文件,包括:响应于接收的所述配置文件,触发用于配置文件加载的入口级加载器的加载方法,将所述待接入消息中间件的类型信息以及所述多种配置信息作为参数,传递至所述适配器。
可选地,所述通过适配器对所述配置文件中的所述多种配置信息进行解析,得到与每种所述配置信息对应的解析结果,包括:以所述待接入消息中间件的类型信息以及所述多种配置信息作为所述适配器的实现类的参数,调用所述适配器的实现类的各子类,所述适配器的实现类的每一子类作为一种所述配置信息的解析器,通过各种所述配置信息的解析器解析对应的所述配置信息,得到所述配置信息的解析结果实例。
可选地,所述多种配置信息包括消息生产者信息、消息消费者信息、连接信息、消息类型信息;所述通过各种所述配置信息的解析器解析对应的所述配置信息,得到所述配置信息的解析结果实例,包括:通过对应的解析器分别对所述消息生产者信息、所述消息消费者信息、所述连接信息、所述消息类型信息进行解析,得到如下的配置模型表示作为所述解析结果实例:消息生产者配置模型表示、消息消费者配置模型表示、连接信息配置模型表示、消息类型配置模型表示。
可选地,所述根据所述待接入消息中间件的类型信息,查找与所述待接入消息中间件对应的中间件构建器,包括:根据所述待接入消息中间件的类型信息,向中间件构建器查找器发送指令,所述中间件构建器查找器响应于所述指令,加载与所述待接入消息中间件的类型信息对应的生产者构建器和消费者构建器。
可选地,向中间件构建器查找器发送的指令中指定有工厂类型,所述工厂类型与工厂类实例相对应,所述工厂类实例用于创建对应的配置信息实例;所述加载与所述待接入消息中间件的类型信息对应的生产者构建器和消费者构建器,包括:加载与所述待接入消息中间件的类型信息对应的生产者工厂实例和消费者工厂实例,所述生产者工厂实例用于创建消息生产者实例,所述消费者工厂实例用于创建消息消费者实例。
可选地,所述由所述中间件构建器根据所述解析结果,构建所述待接入消息中间件,包括:根据所述消息生产者配置模型表示得到所述生产者工厂实例的输入参数,由所述生产者工厂实例构建所述待接入消息中间件的消息生产者实例;根据所述消息消费者配置模型表示得到所述消费者工厂实例的输入参数,由所述消费者工厂实例构建所述待接入消息中间件的消息消费者实例。
可选地,还包括:根据所述消息类型配置模型表示中得到消息类型信息,并通过监听器查找器按照得到的所述消息类型信息查找对应的监听器实例,以将所述监听器实例注册到所述消息消费者实例的消息类型上。
可选地,通过所述监听器查找器的实现类的子类检索与所述消息类型对应的路由键,并访问通用的监听器接口来查找所述监听器实例,所述通用的监听器接口是基于所述监听器实例的父类来实现的。
根据本发明实施例的另一方面,提供了一种消息中间件的切换装置。
一种消息中间件的切换装置,包括:配置文件加载模块,用于加载待接入消息中间件的配置文件,所述配置文件包括所述待接入消息中间件的类型信息以及多种配置信息;配置信息解析模块,用于通过适配器对所述配置文件中的所述多种配置信息进行解析,得到与每种所述配置信息对应的解析结果;中间件构建器查找模块,用于根据所述待接入消息中间件的类型信息,查找与所述待接入消息中间件对应的中间件构建器;消息中间件切换模块,用于由所述中间件构建器根据所述解析结果,构建所述待接入消息中间件,以将已有消息中间件切换为所述待接入消息中间件。
可选地,所述配置文件加载模块还用于:响应于接收的所述配置文件,触发用于配置文件加载的入口级加载器的加载方法,将所述待接入消息中间件的类型信息以及所述多种配置信息作为参数,传递至所述适配器。
可选地,所述配置信息解析模块还用于:以所述待接入消息中间件的类型信息以及所述多种配置信息作为所述适配器的实现类的参数,调用所述适配器的实现类的各子类,所述适配器的实现类的每一子类作为一种所述配置信息的解析器,通过各种所述配置信息的解析器解析对应的所述配置信息,得到所述配置信息的解析结果实例。
可选地,所述多种配置信息包括消息生产者信息、消息消费者信息、连接信息、消息类型信息;所述配置信息解析模块还用于:通过对应的解析器分别对所述消息生产者信息、所述消息消费者信息、所述连接信息、所述消息类型信息进行解析,得到如下的配置模型表示作为所述解析结果实例:消息生产者配置模型表示、消息消费者配置模型表示、连接信息配置模型表示、消息类型配置模型表示。
可选地,所述中间件构建器查找模块还用于:根据所述待接入消息中间件的类型信息,向中间件构建器查找器发送指令,所述中间件构建器查找器响应于所述指令,加载与所述待接入消息中间件的类型信息对应的生产者构建器和消费者构建器。
可选地,向中间件构建器查找器发送的指令中指定有工厂类型,所述工厂类型与工厂类实例相对应,所述工厂类实例用于创建对应的配置信息实例;所述中间件构建器查找模块还用于:加载与所述待接入消息中间件的类型信息对应的生产者工厂实例和消费者工厂实例,所述生产者工厂实例用于创建消息生产者实例,所述消费者工厂实例用于创建消息消费者实例。
可选地,所述消息中间件切换模块还用于:根据所述消息生产者配置模型表示得到所述生产者工厂实例的输入参数,由所述生产者工厂实例构建所述待接入消息中间件的消息生产者实例;根据所述消息消费者配置模型表示得到所述消费者工厂实例的输入参数,由所述消费者工厂实例构建所述待接入消息中间件的消息消费者实例。
可选地,所述消息中间件切换模块还用于:根据所述消息类型配置模型表示中得到消息类型信息,并通过监听器查找器按照得到的所述消息类型信息查找对应的监听器实例,以将所述监听器实例注册到所述消息消费者实例的消息类型上。
可选地,所述消息中间件切换模块还用于:通过所述监听器查找器的实现类的子类检索与所述消息类型对应的路由键,并访问通用的监听器接口来查找所述监听器实例,所述通用的监听器接口是基于所述监听器实例的父类来实现的。
根据本发明实施例的又一方面,提供了一种电子设备。
一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的消息中间件的切换方法。
根据本发明实施例的又一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的消息中间件的切换方法。
上述发明中的一个实施例具有如下优点或有益效果:加载待接入消息中间件的配置文件,通过适配器对配置文件中的多种配置信息进行解析,得到与每种配置信息对应的解析结果,根据配置文件中所含的待接入消息中间件的类型信息,查找与待接入消息中间件对应的中间件构建器,由中间件构建器根据解析结果,构建待接入消息中间件,以将已有消息中间件切换为待接入消息中间件。能够根据项目需要灵活切换消息中间件,不需要修改原来实现的大批量的接口和消息发送器,减少维护和开发工作量,使项目变得简洁轻量,降低技术开发难度。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明一个实施例的消息中间件的切换方法的主要步骤示意图;
图2是根据本发明一个实施例的MQ配置加载器类图;
图3是根据本发明一个实施例的MQ配置模型和模型管理图类图;
图4是根据本发明一个实施例的服务程序实现接口层类图;
图5是根据本发明一个实施例的MQ消息监听器查找器类图;
图6是根据本发明一个实施例的内部对接的MQ消息实现类型类图;
图7是根据本发明一个实施例的MQ启动程序类图;
图8是根据本发明一个实施例的MQ组件依赖关系图;
图9是根据本发明一个实施例的MQ切换框架时序图;
图10是根据本发明一个实施例的MQ切换框架的maven依赖图;
图11是根据本发明一个实施例的消息中间件的切换装置的主要模块示意图;
图12是本发明实施例可以应用于其中的示例性系统架构图;
图13是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明一个实施例的消息中间件的切换方法的主要步骤示意图。如图1所示,本发明一个实施例的消息中间件的切换方法主要包括如下的步骤S101至步骤S104。
步骤S101:加载待接入消息中间件的配置文件,配置文件包括待接入消息中间件的类型信息以及多种配置信息;
步骤S102:通过适配器对配置文件中的多种配置信息进行解析,得到与每种配置信息对应的解析结果;
步骤S103:根据待接入消息中间件的类型信息,查找与待接入消息中间件对应的中间件构建器;
步骤S104:由中间件构建器根据解析结果,构建待接入消息中间件,以将已有消息中间件切换为待接入消息中间件。
待接入消息中间件的类型信息指示待接入消息中间件的具体类型,以MQ(消息队列)中间件为例,具体类型例如jmq、rabbit、kafka等类型的消息中间件。已有消息中间件即之前已经接入的消息中间件。
加载待接入消息中间件的配置文件,具体步骤包括:响应于接收的配置文件,触发用于配置文件加载的入口级加载器的加载方法(load方法),将待接入消息中间件的类型信息以及多种配置信息作为参数,传递至适配器。
通过适配器对配置文件中的多种配置信息进行解析,得到与每种配置信息对应的解析结果,具体步骤包括:以待接入消息中间件的类型信息以及多种配置信息作为适配器的实现类(父类)的参数,调用适配器的实现类的各子类,适配器的实现类的每一子类作为一种配置信息的解析器,通过各种配置信息的解析器解析对应的配置信息,得到配置信息的解析结果实例。待接入消息中间件的类型信息即消息中间件分组信息,多种配置信息具体可以包括消息生产者信息、消息消费者信息、连接信息、消息类型信息,对于MQ中间件,消息类型信息例如topic信息(topic表示消息类型)。
通过各种配置信息的解析器解析对应的配置信息,得到配置信息的解析结果实例,具体步骤包括:通过对应的解析器分别对消息生产者信息、消息消费者信息、连接信息、消息类型信息进行解析,得到如下的配置模型表示作为解析结果实例:消息生产者配置模型表示、消息消费者配置模型表示、连接信息配置模型表示、消息类型配置模型表示。消息生产者配置模型表示内部包含了对消息生产者(简称生产者,producer)的一些描述信息(超时时间等)。消息消费者配置模型表示内部包含了对消息消费者(简称消费者,consumer)的一些描述信息(重试次数、包含的topic等)。连接信息配置模型表示内部包含了对topic的描述信息(包含了topic名称,监听器等)。消息类型配置模型表示内部包含了MQ的连接信息(地址、端口、用户名、密码等等)。
根据待接入消息中间件的类型信息,查找与待接入消息中间件对应的中间件构建器,具体步骤包括:根据待接入消息中间件的类型信息,向中间件构建器查找器发送指令,中间件构建器查找器接收该指令,响应于接收的该指令,加载与待接入消息中间件的类型信息对应的生产者构建器和消费者构建器。
向中间件构建器查找器发送的指令中指定有工厂类型,工厂类型与工厂类实例相对应,工厂类实例用于创建对应的配置信息实例。中间件构建器通过一个接口类实现,该接口类是对MQ创建的工厂抽象,中间件构建器的多个子类分别继承中间件构建器接口类(父类),并实现对消息中间件的消费者创建的工厂封装、对消息中间件连接创建的工厂封装、对消息中间件的生产者创建的工厂封装。其中对消息中间件的消费者创建的工厂封装用于实现消费者构建器,对消息中间件的生产者创建的工厂封装用于实现生产者构建器。
加载与待接入消息中间件的类型信息对应的生产者构建器和消费者构建器,具体步骤包括:加载与待接入消息中间件的类型信息对应的生产者工厂实例和消费者工厂实例,生产者工厂实例用于创建消息生产者实例,消费者工厂实例用于创建消息消费者实例。
由中间件构建器根据解析结果,构建待接入消息中间件,具体步骤包括:根据消息生产者配置模型表示得到生产者工厂实例的输入参数,由生产者工厂实例构建待接入消息中间件的消息生产者实例;根据消息消费者配置模型表示得到消费者工厂实例的输入参数,由消费者工厂实例构建待接入消息中间件的消息消费者实例。
中间件构建器查找器也可通过一个接口类实现,中间件构建器查找器接口类提供了根据输入对输出的一种查找功能的抽象。中间件构建器查找器接口类的子实现类继承中间件构建器查找器接口类,可提供更加切确地输出和输入功能,例如通过路由键来检索出具体的topic(消息类型)的监听器功能。
本发明实施例还包括根据消息类型配置模型表示中得到消息类型信息,并通过监听器查找器按照得到的消息类型信息查找对应的监听器实例,以将监听器实例注册到消息消费者实例的消息类型上。
可通过监听器查找器的实现类的子类检索与消息类型对应的路由键,并访问通用的监听器接口来查找监听器实例,通用的监听器接口是基于监听器实例的父类来实现的。
本发明实施例使得开发者只需要利用监听器查找器访问通用的监听器接口,而不需要关注业务程序,通过路由键即可查找到对应的监听器实例(子类),对于不同消息中间件可以灵活切换,而不需要更改监听器查找的程序代码,降低开发者的技术壁垒,和对接新技术的成本,提升产品化效率。
下面以消息中间件为MQ(消息队列)为例,详细介绍本发明实施例的消息中间件的切换方法。需要说明的是,本发明各实施例的方法及流程也适用于除MQ以外的消息中间件。
本发明实施例中,加载待接入消息中间件的配置文件,以及通过适配器对配置文件中的多种配置信息进行解析,得到与每种配置信息对应的解析结果,具体可在配置加载器(即适配器)执行。
图2是本发明一个实施例的MQ配置加载器类图,其中:
MqParser是一个接口,即:通过适配器的实现类来实现该接口,主要是对配置文件各个模块解析时的一种高层次抽象,其解析的输入包含MQ分组(groupCode,分组编码)以及属性文件的对象,返回值则是泛化表示,具体返回结果则是交由其子实现类来完成。入参如parse(group:String,properties:Properties):T。
MqTopicParser是对MqParser的一种实现,是对MQ中配置的topic信息的配置文件解析的具体实现类,即与消息类型信息对应的解析器,或称topic解析器,职责则是对topic的配置解析。入参如parse(group:String,properties:Properties):List<TopicConfig>。
MqTransportParser,该实现类是对MqParser的一种实现,是对MQ连接传输层的一种配置信息解析器,即与连接信息对应的解析器,或称连接信息解析器。入参如parse(group:String,properties:Properties):TransportConfig。
MqProducerParser,该实现类是对MqParser的一种实现、是对MQ生产者配置信息的一种解析器,即与消息生产者信息对应的解析器,或称生产者解析器。入参如parse(group:String,properties:Properties):ProducerConfig。
MqConsumerParser,该实现类是对MqParser的一种实现,是对MQ消费者配置信息的一种解析器,即与消息消费者信息对应的解析器,或称消费者解析器。入参如parse(group:String,properties:Properties):List<ConsumerConfig>。
MqGroupParser,该实现类是对MqParser的一种实现,是对MQ实例分组的一个完整的解析器(包含了topic、消费者consumer、生产者producer、MQ连接transport等的配置解析),可称为MQ实例分组解析器。入参如parse(group:String,properties:Properties):MqGroup。
ConfigLoader,该类是配置文件加载的入口级加载器,或称配置文件加载器,外部通过触发该实例的load方法完成对配置文件信息的加载、解析、模型转换等过程。ConfigPath配置路径为String形式,缺省配置路径defaultConfigPath:String=mq/config.properties.
上述MqTopicParser、MqTransportParser、MqProducerParser、MqConsumerParser、MqGroupParser这五个配置解析器是MqParser的接口子类实现,即适配器的实现类的每一子类作为一种配置信息的解析器。消费者解析器MqConsumerParser中又包含了topic解析器MqTopicParser。MQ实例分组解析器MqGroupParser中包含了MqTransportParser、MqProducerParser、MqConsumerParser三大解析器。配置文件加载器ConfigLoader中包含了MqGroupParser解析器。
与每种配置信息对应的解析结果具体为相应配置信息的解析结果实例,解析结果实例包括:消息生产者配置模型表示、消息消费者配置模型表示、连接信息配置模型表示、消息类型配置模型表示,等等。
图3是根据本发明一个实施例的MQ配置模型和模型管理图类图如图3所示:
MqType是一个枚举类,是对框架已经实现的MQ的类型的一种汇总体现。例如包括:JMQ、RABBIT、KAFKA、ROCKET、ACTIVEMQ等类型MQ。
MqGroup,该类是图2中MqGroupParser解析器(MQ实例分组解析器)解析后的一种结果实例,该实例内部包含了分组编码、该MQ分组的MQ类型、以及该MQ实例的详细配置信息。
TopicConfig,该类是图2中MqTopicParser(topic解析器)解析后产生的topic配置模型表示,其内部包含了对topic的描述信息(包含了topic名称,监听器等)。
ConsumerConfig,该类是图2中MqConsumerParser(消费者解析器)解析后产生的消费者consumer配置模型表示,其内部包含了对消费者的一些描述信息(重试次数retryTimes、包含的topic等)。
ProducerConfig,该类是图2中MqProducerParser(生产者解析器)解析后产生的生产者producer配置模型表示,其内部包含了对生产者的一些描述信息(超时时间timeout等)。
TransportConfig,该类是图2中MqTransportParser(连接信息解析器)解析后产生的连接信息transport配置模型表示,其内部包含了MQ的连接信息(地址、端口、用户名、密码等等,可为String形式)。
MqConfig,该类是对一组MQ实例的配置信息的封装,内部包含的是对上述的TransportConfig、ProducerConfig、ConsumerConfig的描述。
MqConfigManager,该类是对所有MQ分组的一个管理器,其内部维护了每一组MQ实例,且提供了对MQ分组的判定、获取、统计等等操作,且其也是对图2中ConfigLoader(入口级加载器)的载体,通过MqConfigManager来对ConfigLoader加载的触发过程进行控制。
图3中,MqConfigManager中包含MqGroup和ConfigLoader。MqGroup中包含分组编码、MQ类型MqType以及MQ配置信息MqConfig。MqConfig中包含连接配置TransportConfig、生产者配置ProducerConfig、消费者配置ConsumerConfig。消费者配置ConsumerConfig包含了TopicConfig消息类型配置。
图4是根据本发明一个实施例的服务程序实现接口层类图。图4中:
LifeCycle,该类是一个接口类,其内部包含了开始(start)和结束(stop)两种操作,即对生命周期的一种管控操作。
Consumer,该接口表示的是MQ消费者,内部提供了订阅模式,其功能是将MQ的监听器注册到给定的topic上。
Producer,该接口表示的是MQ生产者,内部提供了MQ的消息发送功能。
MessageListener,该接口表示的是MQ的监听器,用来监听MQ消息队列中的消息。
Message,该类MQ消息的载体,是承载生产者和消费者消息传递的载体。
图4中,MQ消费者即consumer,MQ生产者即producer。MqGroup中包含分组编码、MQ类型MqType以及MQ配置信息MqConfig。MqConfig中包含连接配置TransportConfig、生产者配置ProducerConfig、消费者配置ConsumerConfig。消费者配置ConsumerConfig包含了TopicConfig消息类型配置信息。
图5是根据本发明一个实施例的MQ消息监听器查找器类图。图5中:
Finder是一个接口类,即监听器查找器的实现类(父类),其提供了根据输入对输出的一种查找功能的抽象。
MessageListenerFinder接口,即监听器查找器的实现类的子类,该接口继承了Finder,提供更加切确的输出和输入功能,主要是通过路由键来检索出具体的topic监听器功能。
MessageListenerFinders实现类,该实现类是一个责任链模式,其内部维护了所有的可以通过routerKey(路由键)获取到对应的topic监听器的查找器MessageListenerFinder。路由键与消息类型topic对应,用于查找对应的topic的监听器。
SpringMessageListenerFinder实现类,该实现类是继承了spring容器的一种检索监听器的方式,对于现如今的项目多数是集成了spring,故而提供该查找器来从spring容器中拿到对应的监听器实例。
ReflectMessageListenerFinder实现类,该实现类是对于一个MessageListener子实现类的反射模式(通过class拿到对应的构造方法,然后通过构造方法反射出实例)来创建一个监听器实例。
ReflectionUtil类,该类是一个反射相关的工具类,内部提供了工具名称查找JVM(Java虚拟机)里的class实例的方法,以及通过一个class来创建出该类型的实例对象的方法。
上述MessageListenerFinder、MessageListenerFinders继承了Finder接口,MessageListenerFinders中可以包含多个MessageListenerFinder实例,SpringMessageListenerFinder、ReflectMessageListenerFinder是对MessageListenerFinder接口的两种实现,用于分别提供不同的监听器查找器方式,也可以对此进行扩展。ReflectMessageListenerFinder查找器依赖于ReflectionUtil进行实例化监听器。
图6是根据本发明一个实施例的内部对接的MQ消息实现类型类图。图6中:
MqFactory类,该类是一个接口类,即中间件构建器接口类(父类),是对MQ创建的工厂抽象。
ConsumerFactory接口,该接口继承接口MqFactory,是对MQ消费者创建的工厂封装,以实现消费者构建器。
TransportFactory接口,该接口继承接口MqFactory,是对MQ连接创建的工厂封装,以实现连接信息构建器。
ProducerFactory接口,该接口继承接口MqFactory,是对MQ生产者创建的工厂封装,以实现生产者构建器。
上述ConsumerFactory、TransportFactory、ProducerFactory都是MqFactory接口继承者,即中间件构建器接口类的子类。
图7是根据本发明一个实施例的MQ启动程序类图。图7中:
MqStarter类,该类是MQ启动入口,以屏蔽内部细节。
MqProducerCache类,该类是对MQ生产者的缓存器,目的是缓存已经创建的MQ分组中生产者实例,并提供了对MQ分组生产者实例的操作,以此方式就可以屏蔽掉项目中对某一个具体生产者的依赖,并可以快速定位到生产者实例。
MqFactoryLoader类,该实现类中内部提供了对TransportFactory、ConsumerFactory、ProducerFactory等工厂的全面维护加载,将这些工厂的加载过程封装在MqFactoryLoader内,使其职责分离。
MqFactoryInfo,该实例模型是对已经创建好的一个MQ分组中生产者Producer实例、消费者Consumer实例、连接实例Transport、MQ类型等的一种数据实例的封装,可以方便对MQ的各个组件实例进行统一维护操作。
MqStartBuilder类,该类是对MqStarter的构建过程的一种封装,通过MqStartBuilder用户可以方便地设置自定义的接口实现,并构建出所需的MqStarter启动器实例。
MqHelper类,该类是对于MqStartBuilder实例的创建的一种快捷方式,使得用户使用起来更加简单便捷。
上述图2至图7的类图是对本发明实施例的消息中间件的切换框架中每个职能的一种划分,通过上述各类图可以体现出对于MQ切换框架内部的原理和实现细节,这些类图也能充分体现出每个环节中的各自职责,同时反映了本发明实施例的MQ切换框架设计。
图8是根据本发明一个实施例的MQ组件依赖关系图。图8中:
配置加载器依赖于项目的配置文件来完成对MQ分组配置的加载过程。MQ服务构建器依赖于配置加载器,要通过配置加载器加载到的信息来完成MQ服务的发布过程。MQ监听构建器通过依赖于配置加载器来确定某一个MQ的topic所使用到的监听器。MQ监听器查找器则是对MQ监听构建器的一种路由查找实现的检索。MQ构建器查找服务即中间件构建器查找器,其内聚了MQ服务构建器和MQ监听构建器,MQ服务构建器即生产者构建器,MQ监听构建器即消费者构建器,通过触发MQ构建器查找服务来加载MQ服务构建器和MQ监听构建器。生产者构建器子类、消费者构建器子类分别继承中间件构建器接口类(父类)。
MQ启动器是对外的服务暴露,通过MQ启动器屏蔽内部的具体实现细节,其依赖于MQ构建器查找服务。
图9是根据本发明一个实施例的MQ切换框架时序图。如图9所示:
1、启动器启动(start),开始本流程。启动器即MqStarter类,该类是MQ启动入口,以屏蔽内部细节。在项目启动时执行MqStarter启动器的start方法来启动MQ框架。
2、发送配置文件加载指令,MQ启动时,会优先触发配置文件加载器的配置文件加载方法(load方法)来进行加载配置文件。配置文件加载指令中包含了配置加载器的加载指令,以及可能存在的配置文件路径,如果没有给定配置文件路径则加载默认的配置文件路径。
3、配置文件加载过程,配置文件加载器通过加载项目路径MQ下的config.properties文件,然后对该文件通过解析器进行解析,解析出的结果会转换为MQ分组模型,即MQ分组配置信息,配置文件是属性文件格式,内容是以键值对模式进行存储,数据信息包括MQ分组信息,MQ分组信息表示MQ的类型信息,配置文件中的数据信息还包括生产者信息、连接信息、消费者信息和topic信息等。
4、向启动器返回加载的MQ分组配置信息,即与每种配置信息对应的解析结果。
5、发送MQ构建器查找指令,即根据配置的MQ分组向构建器查找器发送MQ构建器查找指令。该MQ构建器查找指令用于指示MQ构建查找器来加载对接的MQ消息实现类型类图(如图6所示)的工厂实例,指令中输入为工厂类型。
6、MQ构建器加载过程,该步骤中MQ构建器查找器通过SPI方式加载出项目所有对MQ的具体需要的依赖包中的消费者、服务发送器、连接的构建器实例。即通过SPI(应用程序接口)方式加载所有的MqFactory的子接口MqConsumerFactory、MqProducerFactory、MqTransportFactory的具体实现类。SPI方式是加载从项目路径下所有依赖包中或者本地项目资源文件夹下的META-INF(其中存在程序入口相关信息)下查找以该接口命名的文件,然后解析出内部的实例类配置。MQ构建器查找器会在项目启动的时候自动加载该项目下所有依赖的MqFactory的实现类,也就是ConsumerFactory的实现类、ProducerFactory的实现类、TransportFactory的实现类。
7、发送MQ服务发送者构建指令,通过发送者构建器的构建方法来完成对构建的触发。本实施例中发送者即消息生产者。
8、完成MQ服务发送者的构建过程,发送者构建器(或称生产者构建器)会完成自己对已经实现的MQ类型的发送者的构建过程,并得到一个对应的发送器(即消息生产者,或称MQ生产者,用于发送MQ消息实体)。
9、发送MQ消费者构建指令,通过执行消费者构建器的构建方法来完成对消费者构建的触发。
10、下发查找监听器指令。
11、进行监听器查找,即查找到对应的监听器实例过程,通过监听器查找器,将给定的监听器的名称通过反射或者是从缓存容器中得到监听器实例。
12、返回监听器实例,完成MQ消费者监听过程。
13、构建MQ消费者,消费者构建器会完成自己对已经实现的MQ类型的消费者的构建过程,并得到一个对应的消费者。
图10是根据本发明一个实施例的MQ切换框架的maven依赖图。maven以程序构建能力为特色,还提供高级项目管理工具。如图10所示,mq-adapter-core是其下边所有的具体MQ实现依赖包中的共用部分的抽取剥离,对于mq-adapter-jmq、mq-adapter-rabbit、mq-adapter-kafaka等,是对于jmq、rabbit、kafaka等类型MQ的具体实现。
在要基于本发明实施例的MQ切换框架进行MQ切换时,第一步首先需要添加mq-adapter-core依赖包到需要使用到MQ监听和消息发送的业务模块,例如:
第二步,通过MQ服务发布者缓存对每一个MQ分组所对应的生产者实例的映射关系等内容,以方便地通过MQ分组groupCode(分组编码)拿到对应的生产者。通过MQ组获取到消息发送器(即消息生产者)进行消息发送,或者,对某一个topic进行监听的监听器实现内置的监听器接口MessageListener。例如,定义一个消费者MessageListenerTest,示例如下:
第三步,通过maven的profiles激活需要使用的MQ类型依赖包。例如,要激活jmq依赖包,则使用jmq作为本发明实施例的MQ中间件。
添加依赖包:
通过profiles激活如下:
本发明实施例对于接入该框架的项目来说不需要关心外部所使用到的MQ种类,也不需要修改代码或为了适配而适配,只需要通过maven的profile来激活对应的使用到的MQ依赖包就达到了切换目的。可很容易地实现切换自己所有使用到的MQ类型,可以很方便的完成对不同MQ的切换,只需要通过修改配置文件即可完成,其他的无需任何修改。
图11是根据本发明一个实施例的消息中间件的切换装置的主要模块示意图。如图11所示,本发明一个实施例的消息中间件的切换装置1100主要包括:配置文件加载模块1101、配置信息解析模块1102、中间件构建器查找模块1103、消息中间件切换模块1104。
配置文件加载模块1101,用于加载待接入消息中间件的配置文件,配置文件包括待接入消息中间件的类型信息以及多种配置信息;
配置信息解析模块1102,用于通过适配器对配置文件中的多种配置信息进行解析,得到与每种配置信息对应的解析结果;
中间件构建器查找模块1103,用于根据待接入消息中间件的类型信息,查找与待接入消息中间件对应的中间件构建器;
消息中间件切换模块1104,用于由中间件构建器根据解析结果,构建待接入消息中间件,以将已有消息中间件切换为待接入消息中间件。
配置文件加载模块1101具体用于:响应于接收的配置文件,触发用于配置文件加载的入口级加载器的加载方法,将待接入消息中间件的类型信息以及多种配置信息作为参数,传递至适配器。
配置信息解析模块1102具体用于:以待接入消息中间件的类型信息以及多种配置信息作为适配器的实现类的参数,调用适配器的实现类的各子类,适配器的实现类的每一子类作为一种配置信息的解析器,通过各种配置信息的解析器解析对应的配置信息,得到配置信息的解析结果实例。
多种配置信息包括消息生产者信息、消息消费者信息、连接信息、消息类型信息。
配置信息解析模块1102还用于:通过对应的解析器分别对消息生产者信息、消息消费者信息、连接信息、消息类型信息进行解析,得到如下的配置模型表示作为解析结果实例:消息生产者配置模型表示、消息消费者配置模型表示、连接信息配置模型表示、消息类型配置模型表示。
中间件构建器查找模块1103具体用于:根据待接入消息中间件的类型信息,向中间件构建器查找器发送指令,中间件构建器查找器响应于指令,加载与待接入消息中间件的类型信息对应的生产者构建器和消费者构建器。
向中间件构建器查找器发送的指令中指定有工厂类型,工厂类型与工厂类实例相对应,工厂类实例用于创建对应的配置信息实例。
中间件构建器查找模块1103具体还用于:加载与待接入消息中间件的类型信息对应的生产者工厂实例和消费者工厂实例,生产者工厂实例用于创建消息生产者实例,消费者工厂实例用于创建消息消费者实例。
消息中间件切换模块1104具体用于:根据消息生产者配置模型表示得到生产者工厂实例的输入参数,由生产者工厂实例构建待接入消息中间件的消息生产者实例;根据消息消费者配置模型表示得到消费者工厂实例的输入参数,由消费者工厂实例构建待接入消息中间件的消息消费者实例。
消息中间件切换模块1104还用于:根据消息类型配置模型表示中得到消息类型信息,并通过监听器查找器按照得到的消息类型信息查找对应的监听器实例,以将监听器实例注册到消息消费者实例的消息类型上。
消息中间件切换模块1104还用于:通过监听器查找器的实现类的子类检索与消息类型对应的路由键,并访问通用的监听器接口来查找监听器实例,通用的监听器接口是基于监听器实例的父类来实现的。
另外,在本发明实施例中消息中间件的切换装置的具体实施内容,在上面消息中间件的切换方法中已经详细说明了,故在此重复内容不再说明。
图12示出了可以应用本发明实施例的消息中间件的切换方法或消息中间件的切换装置的示例性系统架构1200。
如图12所示,系统架构1200可以包括终端设备1201、1202、1203,网络1204和服务器1205。网络1204用以在终端设备1201、1202、1203和服务器1205之间提供通信链路的介质。网络1204可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1201、1202、1203通过网络1204与服务器1205交互,以接收或发送消息等。终端设备1201、1202、1203上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备1201、1202、1203可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器1205可以是提供各种服务的服务器,例如对用户利用终端设备1201、1202、1203所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的消息中间件的切换方法一般由服务器1205执行,相应地,消息中间件的切换装置一般设置于服务器1205中。
应该理解,图12中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图13,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统1300的结构示意图。图13示出的终端设备或服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图13所示,计算机系统1300包括中央处理单元(CPU)1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。在RAM 1303中,还存储有系统1300操作所需的各种程序和数据。CPU 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接口1305也连接至总线1304。
以下部件连接至I/O接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
特别地,根据本发明公开的实施例,上文参考主要步骤示意图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(CPU)1301执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的主要步骤示意图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,主要步骤示意图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或主要步骤示意图中的每个方框、以及框图或主要步骤示意图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括配置文件加载模块、配置信息解析模块、中间件构建器查找模块、消息中间件切换模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,配置文件加载模块还可以被描述为“用于加载待接入消息中间件的配置文件的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:加载待接入消息中间件的配置文件,所述配置文件包括所述待接入消息中间件的类型信息以及多种配置信息;通过适配器对所述配置文件中的所述多种配置信息进行解析,得到与每种所述配置信息对应的解析结果;根据所述待接入消息中间件的类型信息,查找与所述待接入消息中间件对应的中间件构建器;由所述中间件构建器根据所述解析结果,构建所述待接入消息中间件,以将已有消息中间件切换为所述待接入消息中间件。
根据本发明实施例的技术方案,加载待接入消息中间件的配置文件,通过适配器对配置文件中的多种配置信息进行解析,得到与每种配置信息对应的解析结果,根据配置文件中所含的待接入消息中间件的类型信息,查找与待接入消息中间件对应的中间件构建器,由中间件构建器根据解析结果,构建待接入消息中间件,以将已有消息中间件切换为待接入消息中间件。能够根据项目需要灵活切换消息中间件,不需要修改原来实现的大批量的接口和消息发送器,减少维护和开发工作量,使项目变得简洁轻量,降低技术开发难度。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种消息中间件的切换方法,其特征在于,包括:
加载待接入消息中间件的配置文件,所述配置文件包括所述待接入消息中间件的类型信息以及多种配置信息;
通过适配器对所述配置文件中的所述多种配置信息进行解析,得到与每种所述配置信息对应的解析结果;
根据所述待接入消息中间件的类型信息,查找与所述待接入消息中间件对应的中间件构建器;
由所述中间件构建器根据所述解析结果,构建所述待接入消息中间件,以将已有消息中间件切换为所述待接入消息中间件。
2.根据权利要求1所述的方法,其特征在于,所述加载待接入消息中间件的配置文件,包括:
响应于接收的所述配置文件,触发用于配置文件加载的入口级加载器的加载方法,将所述待接入消息中间件的类型信息以及所述多种配置信息作为参数,传递至所述适配器。
3.根据权利要求1所述的方法,其特征在于,所述通过适配器对所述配置文件中的所述多种配置信息进行解析,得到与每种所述配置信息对应的解析结果,包括:
以所述待接入消息中间件的类型信息以及所述多种配置信息作为所述适配器的实现类的参数,调用所述适配器的实现类的各子类,所述适配器的实现类的每一子类作为一种所述配置信息的解析器,通过各种所述配置信息的解析器解析对应的所述配置信息,得到所述配置信息的解析结果实例。
4.根据权利要求3所述的方法,其特征在于,所述多种配置信息包括消息生产者信息、消息消费者信息、连接信息、消息类型信息;
所述通过各种所述配置信息的解析器解析对应的所述配置信息,得到所述配置信息的解析结果实例,包括:
通过对应的解析器分别对所述消息生产者信息、所述消息消费者信息、所述连接信息、所述消息类型信息进行解析,得到如下的配置模型表示作为所述解析结果实例:消息生产者配置模型表示、消息消费者配置模型表示、连接信息配置模型表示、消息类型配置模型表示。
5.根据权利要求4所述的方法,其特征在于,所述根据所述待接入消息中间件的类型信息,查找与所述待接入消息中间件对应的中间件构建器,包括:
根据所述待接入消息中间件的类型信息,向中间件构建器查找器发送指令,所述中间件构建器查找器响应于所述指令,加载与所述待接入消息中间件的类型信息对应的生产者构建器和消费者构建器。
6.根据权利要求5所述的方法,其特征在于,向中间件构建器查找器发送的指令中指定有工厂类型,所述工厂类型与工厂类实例相对应,所述工厂类实例用于创建对应的配置信息实例;
所述加载与所述待接入消息中间件的类型信息对应的生产者构建器和消费者构建器,包括:
加载与所述待接入消息中间件的类型信息对应的生产者工厂实例和消费者工厂实例,所述生产者工厂实例用于创建消息生产者实例,所述消费者工厂实例用于创建消息消费者实例。
7.根据权利要求6所述的方法,其特征在于,所述由所述中间件构建器根据所述解析结果,构建所述待接入消息中间件,包括:
根据所述消息生产者配置模型表示得到所述生产者工厂实例的输入参数,由所述生产者工厂实例构建所述待接入消息中间件的消息生产者实例;
根据所述消息消费者配置模型表示得到所述消费者工厂实例的输入参数,由所述消费者工厂实例构建所述待接入消息中间件的消息消费者实例。
8.根据权利要求7所述的方法,其特征在于,还包括:
根据所述消息类型配置模型表示中得到消息类型信息,并通过监听器查找器按照得到的所述消息类型信息查找对应的监听器实例,以将所述监听器实例注册到所述消息消费者实例的消息类型上。
9.根据权利要求8所述的方法,其特征在于,通过所述监听器查找器的实现类的子类检索与所述消息类型对应的路由键,并访问通用的监听器接口来查找所述监听器实例,所述通用的监听器接口是基于所述监听器实例的父类来实现的。
10.一种消息中间件的切换装置,其特征在于,包括:
配置文件加载模块,用于加载待接入消息中间件的配置文件,所述配置文件包括所述待接入消息中间件的类型信息以及多种配置信息;
配置信息解析模块,用于通过适配器对所述配置文件中的所述多种配置信息进行解析,得到与每种所述配置信息对应的解析结果;
中间件构建器查找模块,用于根据所述待接入消息中间件的类型信息,查找与所述待接入消息中间件对应的中间件构建器;
消息中间件切换模块,用于由所述中间件构建器根据所述解析结果,构建所述待接入消息中间件,以将已有消息中间件切换为所述待接入消息中间件。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-9中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111284093.1A CN113961376A (zh) | 2021-11-01 | 2021-11-01 | 一种消息中间件的切换方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111284093.1A CN113961376A (zh) | 2021-11-01 | 2021-11-01 | 一种消息中间件的切换方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961376A true CN113961376A (zh) | 2022-01-21 |
Family
ID=79468756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111284093.1A Pending CN113961376A (zh) | 2021-11-01 | 2021-11-01 | 一种消息中间件的切换方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961376A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101078995A (zh) * | 2007-06-08 | 2007-11-28 | 北京大学 | 构件运行支撑平台接入消息服务的方法 |
CN109976919A (zh) * | 2017-12-28 | 2019-07-05 | 北京京东尚科信息技术有限公司 | 一种消息请求的传输方法和装置 |
CN110399236A (zh) * | 2019-07-25 | 2019-11-01 | 泰康保险集团股份有限公司 | 消息队列的适配方法、装置、介质及电子设备 |
CN112202781A (zh) * | 2020-09-30 | 2021-01-08 | 广东巴金斯科技有限公司 | 一种电商大数据量回执报文处理方法、装置和系统 |
CN112235205A (zh) * | 2020-09-21 | 2021-01-15 | 珠海市卓轩科技有限公司 | 一种发送和消费mq消息的方法、装置及存储介质 |
CN113204436A (zh) * | 2020-02-03 | 2021-08-03 | 马上消费金融股份有限公司 | 一种消息处理方法、装置、设备及计算机可读存储介质 |
CN113419882A (zh) * | 2021-08-24 | 2021-09-21 | 成都特维思科技有限公司 | 一种动态切换消息队列的方法 |
-
2021
- 2021-11-01 CN CN202111284093.1A patent/CN113961376A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101078995A (zh) * | 2007-06-08 | 2007-11-28 | 北京大学 | 构件运行支撑平台接入消息服务的方法 |
CN109976919A (zh) * | 2017-12-28 | 2019-07-05 | 北京京东尚科信息技术有限公司 | 一种消息请求的传输方法和装置 |
CN110399236A (zh) * | 2019-07-25 | 2019-11-01 | 泰康保险集团股份有限公司 | 消息队列的适配方法、装置、介质及电子设备 |
CN113204436A (zh) * | 2020-02-03 | 2021-08-03 | 马上消费金融股份有限公司 | 一种消息处理方法、装置、设备及计算机可读存储介质 |
CN112235205A (zh) * | 2020-09-21 | 2021-01-15 | 珠海市卓轩科技有限公司 | 一种发送和消费mq消息的方法、装置及存储介质 |
CN112202781A (zh) * | 2020-09-30 | 2021-01-08 | 广东巴金斯科技有限公司 | 一种电商大数据量回执报文处理方法、装置和系统 |
CN113419882A (zh) * | 2021-08-24 | 2021-09-21 | 成都特维思科技有限公司 | 一种动态切换消息队列的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111158818B (zh) | 一种页面渲染方法和装置 | |
US11403117B2 (en) | Methods for processing mini program, and related devices | |
CN110324169B (zh) | 一种接口管理的方法和装置 | |
US7526482B2 (en) | System and method for enabling components on arbitrary networks to communicate | |
CN111338623B (zh) | 一种开发用户界面的方法、装置、介质和电子设备 | |
CN111478956B (zh) | 小程序包的部署、预览方法和装置 | |
CN111767069A (zh) | 小程序处理方法、服务器、设备及存储介质 | |
CN109783562B (zh) | 一种业务处理方法和装置 | |
WO2021169150A1 (zh) | 宿主平台层中的应用接口实现方法、装置、设备和介质 | |
CN110968340A (zh) | 一种实现多版本依赖隔离的方法和装置 | |
CN110858202A (zh) | 数据库查询语句中where子句的生成方法和生成装置 | |
CN112445868A (zh) | 业务报文处理方法和装置 | |
CN112612467A (zh) | 一种处理基于qiankun的微前端架构的方法和装置 | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
US9996344B2 (en) | Customized runtime environment | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
CN110764769A (zh) | 处理用户请求的方法和装置 | |
CN109981546B (zh) | 获取应用模块间的远程调用关系的方法和装置 | |
EP3872630A2 (en) | Request processing method and apparatus, electronic device, and computer storage medium | |
CN112015383A (zh) | 一种登录方法和装置 | |
CN112905273A (zh) | 一种服务调用方法和装置 | |
CN112035270A (zh) | 接口适配方法、系统、装置、计算机可读介质及电子设备 | |
US7908397B1 (en) | Application server gateway technology | |
WO2023083071A1 (zh) | 视图交互方法、装置、电子设备及计算机可读介质 | |
CN113505036B (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 |