CN113626222A - 消息处理方法、装置、计算机设备和存储介质 - Google Patents
消息处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113626222A CN113626222A CN202110914770.7A CN202110914770A CN113626222A CN 113626222 A CN113626222 A CN 113626222A CN 202110914770 A CN202110914770 A CN 202110914770A CN 113626222 A CN113626222 A CN 113626222A
- Authority
- CN
- China
- Prior art keywords
- message
- adapter
- function
- middleware
- initial
- 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
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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- 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
Abstract
本申请涉及基架运维领域,实现在接收到消息中间件调用请求时,通过根据标准处理函数间接调用初始处理函数进行消息处理,避免了在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。涉及一种消息处理方法、装置、计算机设备和存储介质,该方法包括:当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件;确定调用请求对应的目标适配器,目标适配器用于转接标准接口与第一消息中间件;根据目标适配器,确定第一消息中间件对应的待调用的初始处理函数;执行标准接口中的标准处理函数,以基于目标适配器调用初始处理函数进行消息处理,标准处理函数用于调用初始处理函数。
Description
技术领域
本申请涉及基架运维领域,尤其涉及一种消息处理方法、装置、计算机设备和存储介质。
背景技术
消息中间件是各业务系统之间通信的重要基础,其中,业务系统可以是保险业务系统,也可以是医疗平台,等等。现有的多种消息中间件的调用方式各不相同,但基本原理相同,每一种中间件都是由生产者、消费者、消息主题、消息队列以及消息体组成。在实际应用场景中,业务系统通常会针对不同的场景需要调用不同的消息中间件;由于每种消息中间件的调用方式各不同,需要针对性地修改调用请求代码才可以实现正常调用消息中间件进行消息处理,因此需要花费较长时间,导致消息处理的效率较低。
因此,如何提高消息处理的效率成为亟需解决的问题。
发明内容
本申请提供了一种消息处理方法、装置、计算机设备和存储介质,实现在接收到消息中间件调用请求时,通过根据标准处理函数间接调用初始处理函数进行消息处理,避免了在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。
第一方面,本申请提供了一种消息处理方法,所述方法包括:
当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件;
确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件;
根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数;
执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
第二方面,本申请还提供了一种消息处理装置,所述装置包括:
消息中间件确定模块,用于当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件;
适配器确定模块,用于确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件;
初始处理函数确定模块,用于根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数;
标准处理函数执行模块,用于执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的消息处理方法。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的消息处理方法。
本申请公开了一种消息处理方法、装置、计算机设备和存储介质,通过在基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件,可以实现通过统一的标准接口调用第一消息中间件进行消息处理;通过确定调用请求对应的目标适配器,可以获得用于转接标准接口与第一消息中间件的目标适配器,后续可以实现基于目标适配器,根据标准接口中的标准处理函数间接调用第一消息中间件中的初始处理函数;通过根据目标适配器的类型,可以确定第一消息中间件对应的待调用的初始处理函数;通过执行标准接口中的标准处理函数,以基于目标适配器调用初始处理函数进行消息处理,可以实现由标准处理函数统一调用不同消息中间件的初始处理函数进行消息处理,避免了在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种消息处理方法的示意性流程图;
图2是本申请实施例提供的一种适配器转接标准接口与第一消息中间件的示意图;
图3是本申请实施例提供的另一种适配器转接标准接口与第一消息中间件的示意图;
图4是本申请实施例提供的一种通过适配器将每个消息中间件标准化至标准接口的子步骤的示意性流程图;
图5是本申请实施例提供的一种通过适配器将每个消息中间件标准化至标准接口的示意图;
图6是本申请实施例提供的另一种通过适配器将每个消息中间件标准化至标准接口的示意图;
图7是本申请实施例提供的另一种通过适配器将每个消息中间件标准化至标准接口的示意图;
图8是本申请实施例提供的一种消息处理装置的示意性框图;
图9是本申请实施例提供的一种计算机设备的结构示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本申请的实施例提供了一种消息处理方法、装置、计算机设备和存储介质。其中,该消息处理方法可以应用于服务器或终端中,实现在接收到消息中间件的调用请求时,通过根据标准处理函数间接调用初始处理函数进行消息处理,避免了在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。
其中,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑和台式电脑等电子设备。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
如图1所示,消息处理方法包括步骤S10至步骤S40。
步骤S10、当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件。
需要说明的是,本申请实施例提供的消息处理方法可以应用于业务系统调用消息中间件进行消息处理的场景中。例如,业务系统可以向标准接口发送消息中间件调用请求,使得服务器或终端执行标准接口中的标准处理函数,以基于目标适配器调用消息中间件中的初始处理函数进行消息处理。从而,可以避免了在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。
示例性的,业务系统可以包括但不限于理赔报案系统、理赔查勘系统以及医疗平台等等。例如,理赔报案系统可以向标准接口发送消息中间件调用请求,以调用消息中间件进行生产消息。又例如,理赔查勘系统可以向标准接口发送消息中间件调用请求,以调用消息中间件进行消费消息。
示例性的,用户可以通过医疗平台查询医疗数据,如个人健康档案、处方、检查报告等数据。医疗平台可以调用消息中间件进行生产消息和消费消息,以返回用户所需的数据。
在一些实施方式中,当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件。示例性的,可以将服务器或终端上当前安装的消息中间件,确定为待调用的第一消息中间件。
示例性的,消息中间件可以包括但不限于Kafka、ActiveMQ、RabbitMQ以及RocketMQ等等。
需要说明的是,用户可以根据业务需求,将需要使用的消息中间件在服务器或终端上安装并启动;然后创建该消息中间件的消息主题,以使该消息中间件具备生产消息与消费消息的能力。其中,消息中间件可以包括生产者、消费者、消息主题、消息队列以及消息体等部分。可以理解的是,生产消息是指生产者将消息写入消息队列中;消费消息是指消费者从消息队列中读取消息。
示例性的,在本申请实施例中,标准接口可以是一个,也可以是两个。当存在两个标准接口时,可以包括生产消息接口、消费消息接口。其中,生产消息接口用于接收消息处理类型为生产消息处理类型的调用请求;消费消息接口用于接收消息处理类型为消费消息处理类型的调用请求。
通过在基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件,可以实现通过统一的标准接口调用第一消息中间件进行消息处理。
步骤S20、确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件。
需要说明的是,适配器是指适配器模式中的适配器,适配器模式的主要思想是把一个类的接口变换成另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
示例性的,适配器模式包括源、适配器以及目标。其中,源是指需要被适配的对象或类;适配器是指连接目标和源的中间对象;目标是指期待得到的目标。在本申请实施例中,源是指消息中间件;目标是指标准接口。需要说明的是,在现有技术中,若要通过标准接口调用消息中间件,则需要考虑消息中间件中的调用方式,并针对不同的消息中间件修改调用请求代码;而在本申请实施例中,通过适配器转接标准接口与消息中间件,可以实现直接通过标准接口调用消息中间件,不必关注消息中间件的调用方式。从而,提高了调用消息中间件的效率,进而消息处理的效率。
在一些实施例中,确定调用请求对应的目标适配器,可以包括:根据调用请求的消息处理类型,确定目标适配器,其中,消息处理类型包括生产消息处理类型和消费消息处理类型。
需要说明的是,在本申请实施例中,转接标准接口与第一消息中间件的适配器包括第一类适配器、第二类适配器。其中,第一类适配器在生产消息时起作用;第二类适配器在消费消息时起作用。
示例性的,可以根据调用请求的消息处理类型,确定调用请求对应的目标适配器。
在一些实施方式中,根据调用请求的消息处理类型,确定目标适配器,可以包括:当消息处理类型为生产消息处理类型时,将第一类适配器确定为目标适配器;当消息处理类型为消费消息处理类型时,将第二类适配器确定为目标适配器。
请参阅图2,图2是本申请实施例提供的一种适配器转接标准接口与第一消息中间件的示意图。如图2所示,当只有一个标准接口时,第一消息中间件的适配器与标准接口连接。其中,适配器可以包括第一类适配器、第二类适配器。
需要说明的,当标准接口只有一个时,所有调用请求都是通过标准接口进行接收;因此,可以通过调用请求的消息处理类型,确定调用请求对应的目标适配器。其中,可以根据调用请求中的类型标识,确定调用请求的消息处理类型。例如,业务系统在发送调用请求时,可以对调用请求添加不同的类型标识,以区分调用请求的消息处理类型。
在本申请实施例中,当标准接口包括生产消息接口、消费消息接口时,可以根据标准接口的类型确定目标适配器。
请参阅图3,图3是本申请实施例提供的另一种适配器转接标准接口与第一消息中间件的示意图。如图3所示,第一消息中间件的适配器包括第一类适配器和第二类适配器;其中,第一类适配器用于转接生产消息接口与第一消息中间件,第二类适配器用于转接消费消息接口与第一消息中间件。
示例性的,当接收调用请求的标准接口为生产消息接口时,将第一类适配器确定为目标适配器。
示例性的,当接收调用请求的标准接口为消费消息接口时,将第二类适配器确定为目标适配器。
通过确定调用请求对应的目标适配器,可以获得用于转接标准接口与第一消息中间件的目标适配器,后续可以实现基于目标适配器,根据标准接口中的标准处理函数间接调用第一消息中间件中的初始处理函数进行消息处理。
在本申请实施例中,可以预先生成每个消息中间件的适配器,通过适配器将每个消息中间件标准化至标准接口,实现通过标准接口统一调用消息中间件。其中,标准化是指将消息中间件的初始消息函数映射至同一的标准消息函数中,并将映射后的标准消息函数封装至标准接口的过程。从而,可以通过标准接口中的标准消息函数,调用每个消息中间件的初始消息函数进行消息处理;无需关注消息中间件的初始消息函数,也无需修改调用请求代码,提高了调用消息中间件的效率,进而提高了消息处理的效率。
示例性的,初始消息函数可以包括初始生产消息函数、初始消费消息函数。其中,初始生产消息函数是指实现消息中间件的生产者将消息写入消息队列的方法;初始消费消息函数是指实现消息中间件的消费者从消息队列中读取消息的方法。
需要说明的是,不同的消息中间件,对应的初始生产消息函数、初始消费消息函数都不一样。例如,Kafka消息中间件的初始生产消息函数为KafkaProducer.send函数,初始消费消息函数为KafkaConsumer.subscribe函数;RocketMQ消息中间件的初始生产消息函数为DefaultMQProducer.send函数,初始消费消息函数为DefaultMQPushConsumer.consumeMessage函数;ActiveMQ消息中间件的初始生产消息函数为MessageProducer.send函数,初始消费消息函数为MessageConsumer.Receive函数。
可以理解的是,通过调用统一的标准消息函数,实质上是调用消息中间件的初始消息函数进行消息处理;因此,可以避免在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。
请参阅图4,图4是本申请实施例提供的一种通过适配器将每个消息中间件标准化至标准接口的子步骤的示意性流程图,具体可以包括以下步骤S201至步骤S203。
步骤S201、生成每个消息中间件对应的多个适配器,所述适配器包括第一类适配器与第二类适配器。
示例性的,可以创建每个消息中间件对应的第一类适配器与第二类适配器。需要说明的是,由于不同的消息中间件对应的初始生产消息函数、初始消费消息函数都不一样,因此,需要创建每个消息中间件对应的第一类适配器与第二类适配器。从而,可以通过第一类适配器将消息中间件对应的初始生产消息函数标准化至标准接口,以及通过第二类适配器将消息中间件对应的初始消费消息函数标准化至标准接口。
请参阅图5,图5是本申请实施例提供的一种通过适配器将每个消息中间件标准化至标准接口的示意图。如图5所示,标准接口包括生产消息接口、消费消息接口;每个消息中间件的第一类适配器与生产消息接口连接,每个消息中间件的第二类适配器与消费消息接口连接。例如,Kafka消息中间件的第一类适配器与生产消息接口连接,第二类适配器与消费消息接口连接。RocketMQ消息中间件的第一类适配器与生产消息接口连接,第二类适配器与消费消息接口连接。ActiveMQ消息中间件的第一类适配器与生产消息接口连接,第二类适配器与消费消息接口连接。
步骤S202、调用每个所述消息中间件的所述第一类适配器,将每个所述消息中间件中的初始生产消息函数映射至预设的标准生产消息函数,并将映射后的所述标准生产消息函数封装至所述生产消息接口。
需要说明的是,映射是指在两个模型之间建立起数据元素的对应关系的过程。在本申请实施例中,通过将每个消息中间件中的初始生产消息函数映射至预设的标准生产消息函数,从而可以实现通过标准生产消息函数调用初始生产消息函数。
示例性的,预设的标准生产消息函数可以是StandardMQ.publish函数。
在一些实施方式中,可以调用每个消息中间件的第一类适配器,将每个消息中间件中的初始生产消息函数映射至预设的标准生产消息函数,并将映射后的标准生产消息函数封装至生产消息接口。
需要说明的是,封装是一种函数的功能,用于实现将一个或者多个功能以函数、类的方式封装起来,对外只提供一个简单的函数接口。
示例性的,对于Kafka消息中间件,可以将Kafka消息中间件的初始生产消息函数KafkaProducer.send映射至标准生产消息函数StandardMQ.publish,从而标准生产消息函数StandardMQ.publish与初始生产消息函数KafkaProducer.send存在映射关系。通过执行标准生产消息函数StandardMQ.publish,可以调用初始生产消息函数KafkaConsumer.subscribe。对于RocketMQ消息中间件,可以将RocketMQ消息中间件的初始生产消息函数DefaultMQProducer.send映射至标准生产消息函数StandardMQ.publish,从而标准生产消息函数StandardMQ.publish与初始生产消息函数DefaultMQProducer.send存在映射关系。
示例性的,可以将映射后的标准生产消息函数封装至生产消息接口。
需要说明的是,由于标准生产消息函数StandardMQ.publish与多个初始生产消息函数存在映射关系,因此,在执行标准生产消息函数StandardMQ.publish时,可以通过当前消息中间件的第一类适配器确定调用的初始生产消息函数。
示例性的,可以将每个消息中间件对应的初始生产消息函数与每个消息中间件对应的第一类适配器进行关联,并将关联关系添加至标准生产消息函数。从而,在执行标准生产消息函数时,可以根据转接标准接口与消息中间件的第一类适配器,确定调用的初始生产消息函数。
通过调用每个消息中间件的第一类适配器,将每个消息中间件中的初始生产消息函数映射至预设的标准生产消息函数,并将映射后的标准生产消息函数封装至生产消息接口,可以实现通过生产消息接口中的标准生产消息函数统一调用消息中间件的初始生产消息函数。
步骤S203、调用每个所述消息中间件对应的第二类适配器,将每个所述消息中间件的初始消费消息函数映射至预设的标准消费消息函数,并将映射后的所述标准消费消息函数封装至所述消费消息接口。
示例性的,预设的标准消费消息函数可以是StandardMQ.subscribe函数。
示例性的,对于Kafka消息中间件,可以将Kafka消息中间件的初始消费消息函数KafkaConsumer.subscribe映射至标准消费消息函数StandardMQ.subscribe,从而标准消费消息函数StandardMQ.subscribe与初始消费消息函数KafkaConsumer.subscribe存在映射关系。通过执行标准消费消息函数StandardMQ.publish,可以调用初始消费消息函数KafkaConsumer.subscribe。对于RocketMQ消息中间件,可以将RocketMQ消息中间件的初始消费消息函数DefaultMQPushConsumer.consumeMessage映射至标准消费消息函数StandardMQ.subscribe,从而标准消费消息函数StandardMQ.subscribe与初始消费消息函数DefaultMQPushConsumer.consumeMessage存在映射关系。
示例性的,可以将映射后的标准消费消息函数封装至消费消息接口。
需要说明的是,由于标准消费消息函数StandardMQ.subscribe与多个初始消费消息函数存在映射关系,因此,在执行标准消费消息函数StandardMQ.subscribe时,可以通过当前消息中间件的第二类适配器确定调用的初始消费消息函数。
在一些实施例中,可以将每个消息中间件对应的初始消费消息函数与每个消息中间件对应的第二类适配器进行关联,并将关联关系添加至标准消费消息函数。从而,在执行标准消费消息函数时,可以根据转接标准接口与消息中间件的第二类适配器,确定调用的初始消费消息函数。
通过调用每个消息中间件的第二类适配器,将每个消息中间件中的初始消费消息函数映射至预设的标准消费消息函数,并将映射后的标准消费消息函数封装至消费消息接口,可以实现通过消费消息接口中的标准消费消息函数统一调用消息中间件的初始消费消息函数。
请参阅图6,图6是本申请实施例提供的另一种通过适配器将每个消息中间件标准化至标准接口的示意图。如图6所示,当只有一个标准接口时,每个消息中间件的适配器与标准接口连接。示例性的,调用每个消息中间件的适配器,将每个消息中间件中的初始消息函数映射至预设的标准消息函数,并将映射后的标准消息函数封装至标准接口。例如,调用Kafka消息中间件的适配器,将Kafka消息中间件中的初始消息函数映射至预设的标准消息函数;又例如,调用调用Kafka消息中间件的适配器,将RocketMQ消息中间件中的初始消息函数映射至预设的标准消息函数。最后,将上述映射后的标准消息函数封装至标准接口。
请参阅图7,图7是本申请实施例提供的另一种通过适配器将每个消息中间件标准化至标准接口的示意图。如图7所示,在图6的基础上,每个消息中间件的适配器包括第一类适配器和第二类适配器时,每个消息中间件的第一类适配器与标准接口连接,每个消息中间件的第二类适配器与标准接口连接。示例性的,调用每个消息中间件的第一类适配器,将每个消息中间件中的初始生产消息函数映射至预设的标准生产消息函数,并将映射后的标准生产消息函数封装至标准接口;调用每个消息中间件对应的第二类适配器,将每个消息中间件的初始消费消息函数映射至预设的标准消费消息函数,并将映射后的标准消费消息函数封装至标准接口。其中,具体的映射过程与封装过程,与上述实施例相似,具体过程在此不再赘述。
通过生成每个消息中间件对应的第一类适配器和第二类适配器,可以根据第一类适配器将消息中间件对应的初始生产消息函数标准化至标准接口,以及根据第二类适配器将消息中间件对应的初始消费消息函数标准化至标准接口。
在一些实施例中,在步骤S201生成每个消息中间件对应的多个适配器之后,本申请实施例还可以包括:获取第一消息中间件对应的第一依赖包;根据第一依赖包,激活第一消息中间件对应的适配器。
需要说明的是,依赖包是建立上层应用与底层消息中间件之间的桥梁,是适配器正常运行所需的环境文件。其中,依赖包可以是库文件,例如动态库文件、静态库文件等。每个消息中间件都有唯一的依赖包,可以预先将消息中间件与对应的依赖包进行关联。
示例性的,可以激活第一消息中间件的第一类适配器与第二类适配器。
通过获取第一消息中间件对应的第一依赖包,并根据第一依赖包激活第一消息中间件对应的适配器,可以使得适配器能够正常工作,以实现基于适配器调用第一消息中间件的初始处理函数进行消息处理。
在一些实施例中,根据第一依赖包,激活第一消息中间件对应的适配器之后,还可以包括:当检测到对第一依赖包或第一消息中间件的切换操作时,根据切换操作确定切换的第二消息中间件以及第二消息中间件对应的第二依赖包;根据第二依赖包,激活第二消息中间件对应的适配器。
需要说明的是,用户可以根据业务需求,更换服务器或终端上的消息中间件。
示例性的,当检测到对第一依赖包的切换操作时,根据切换操作确定切换的第二依赖包;基于预设的消息中间件与依赖包之间的对应关系,确定第二依赖包对应的第二消息中间件;安装并启动第二消息中间件,并根据第二依赖包,激活第二消息中间件的第一类适配器与第二类适配器。
示例性的,当检测到对第一消息中间件的切换操作时,根据切换操作确定切换的第二消息中间件;基于预设的消息中间件与依赖包之间的对应关系,确定第二消息中间件对应的第二依赖包;安装并启动第二消息中间件,并根据第二依赖包,激活第二消息中间件的第一类适配器与第二类适配器。
通过根据切换操作确定切换的第二消息中间件以及第二消息中间件对应的第二依赖包,并安装第二消息中间件以及根据第二依赖包激活适配器,可以便捷地实现更换消息中间件,无需更改上层应用的代码,提高了消息中间件切换的效率以及降低了切换消息中间件的成本。
步骤S30、根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数。
可以理解的是,由于每个消息中间件对应的初始生产消息函数与每个消息中间件对应的第一类适配器存在关联关系,每个消息中间件对应的初始消费消息函数与每个消息中间件对应的第二类适配器存在关联关系,因此,可以根据调用请求对应的目标适配器,确定第一消息中间件对应的待调用的初始处理函数。
在一些实施例中,根据目标适配器,确定第一消息中间件对应的待调用的初始处理函数,可以包括:当目标适配器为第一类适配器时,确定待调用的初始处理函数为第一消息中间件中的初始生产消息函数;当目标适配器为第二类适配器时,确定待调用的初始处理函数为第一消息中间件中的初始消费消息函数。
示例性的,对于Kafka消息中间件,当目标适配器为第一类适配器时,可以确定待调用的初始处理函数为KafkaProducer.send函数;当目标适配器为第二类适配器时,可以确定待调用的初始处理函数为KafkaConsumer.subscribe函数。
示例性的,对于RocketMQ消息中间件,当目标适配器为第一类适配器时,可以确定待调用的初始处理函数为DefaultMQProducer.send函数;当目标适配器为第二类适配器时,可以确定待调用的初始处理函数为DefaultMQPushConsumer.consumeMessage函数。
通过根据目标适配器的类型确定第一消息中间件对应的待调用的初始处理函数,可以获得与目标适配器匹配的初始处理函数,后续可以基于目标适配器调用对应的初始处理函数,避免出现调用异常情况。
步骤S40、执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
可以理解的是,通过标准接口中的标准处理函数调用初始处理函数,屏蔽了不同消息中间件之间调用方式的差异,无需关注不同消息中间件的初始处理函数,也无需针对性地修改调用请求代码。
需要说明的是,当目标适配器为第一类适配器时,对应的标准处理函数为标准生产消息函数,对应的初始处理函数为初始生产消息函数;此时的消息处理是指生产消息。当目标适配器为第二类适配器时,对应的标准处理函数为标准消费消息函数,对应的初始处理函数为初始消费消息函数;此时的消息处理是指消费消息。
示例性的,当第一消息中间件为Kafka时,若目标适配器为第一类适配器,则可以执行标准生产消息函数StandardMQ.publish,以基于第一类适配器调用初始生产消息函数KafkaProducer.send进行消息处理。例如,执行初始生产消息函数KafkaProducer.send,控制第一消息中间件中的生产者将消息写入消息队列中。
示例性的,当第一消息中间件为Kafka时,若目标适配器为第二类适配器,则可以执行标准消费消息函数StandardMQ.subscribe,以基于第二类适配器调用初始消费消息函数KafkaConsumer.subscribe进行消息处理。例如,执行初始消费消息函数KafkaConsumer.subscribe,控制第一消息中间件中的消费者读取消息队列中的消息。
通过执行标准接口中的标准处理函数,以基于目标适配器调用初始处理函数进行消息处理,可以实现由标准处理函数统一调用不同消息中间件的初始处理函数进行消息处理,避免了在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。
上述实施例提供的消息处理方法,通过确定调用请求对应的目标适配器,可以获得用于转接标准接口与第一消息中间件的目标适配器,后续可以实现基于目标适配器,根据标准接口中的标准处理函数间接调用第一消息中间件中的初始处理函数进行消息处理;通过生成每个消息中间件对应的第一类适配器和第二类适配器,可以根据第一类适配器将消息中间件对应的初始生产消息函数标准化至标准接口,以及根据第二类适配器将消息中间件对应的初始消费消息函数标准化至标准接口;通过获取第一消息中间件对应的第一依赖包,并根据第一依赖包激活第一消息中间件对应的适配器,可以使得适配器能够正常工作,以实现基于适配器调用第一消息中间件的初始处理函数进行消息处理;通过根据切换操作确定切换的第二消息中间件以及第二消息中间件对应的第二依赖包,并安装第二消息中间件以及根据第二依赖包激活适配器,可以便捷地实现更换消息中间件,无需更改上层应用服务的代码,提高了消息中间件切换的效率以及降低了切换消息中间件的成本;通过执行标准接口中的标准处理函数,以基于目标适配器调用初始处理函数进行消息处理,可以实现由标准处理函数统一调用不同消息中间件的初始处理函数进行消息处理,避免了在调用不同的消息中间件的初始处理函数时,需要针对性地修改调用请求代码的问题,提高了消息处理的效率。
请参阅图8,图8是本申请的实施例还提供一种消息处理装置1000的示意性框图,该消息处理装置用于执行前述的消息处理方法。其中,该消息处理装置可以配置于服务器或终端中。
如图8所示,该消息处理装置1000,包括:消息中间件确定模块1001、适配器确定模块1002、初始处理函数确定模块1003和标准处理函数执行模块1004。
消息中间件确定模块1001,用于当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件。
适配器确定模块1002,用于确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件。
初始处理函数确定模块1003,用于根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数。
标准处理函数执行模块1004,用于执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图9所示的计算机设备上运行。
请参阅图9,图9是本申请实施例提供的一种计算机设备的结构示意性框图。
请参阅图9,该计算机设备包括通过系统总线连接的处理器和存储器,其中,存储器可以包括非易失性存储介质和内存储器。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种消息处理方法。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件;确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件;根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数;执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
在一个实施例中,所述处理器在实现确定所述调用请求对应的目标适配器时,用于实现:
根据所述调用请求的消息处理类型,确定所述目标适配器,其中,所述消息处理类型包括生产消息处理类型和消费消息处理类型。
在一个实施例中,转接所述标准接口与所述第一消息中间件的适配器包括第一类适配器、第二类适配器;所述处理器在实现根据所述调用请求的消息处理类型,确定所述目标适配器时,用于实现:
当所述消息处理类型为生产消息处理类型时,将所述第一类适配器确定为所述目标适配器;当所述消息处理类型为消费消息处理类型时,将所述第二类适配器确定为所述目标适配器。
在一个实施例中,所述初始消息函数包括初始生产消息函数、初始消费消息函数,所述标准接口包括生产消息接口、消费消息接口;所述处理器在实现确定所述调用请求对应的目标适配器之前,还用于实现:
生成每个消息中间件对应的多个适配器,所述适配器包括第一类适配器与第二类适配器;调用每个所述消息中间件的所述第一类适配器,将每个所述消息中间件中的初始生产消息函数映射至预设的标准生产消息函数,并将映射后的所述标准生产消息函数封装至所述生产消息接口;调用每个所述消息中间件对应的第二类适配器,将每个所述消息中间件的初始消费消息函数映射至预设的标准消费消息函数,并将映射后的所述标准消费消息函数封装至所述消费消息接口。
在一个实施例中,所述处理器在实现生成每个消息中间件对应的多个适配器之后,还用于实现:
获取所述第一消息中间件对应的第一依赖包;根据所述第一依赖包,激活所述第一消息中间件对应的适配器。
在一个实施例中,所述处理器在实现根据所述第一依赖包,激活所述第一消息中间件对应的适配器之后,还用于实现:
当检测到对所述第一依赖包或所述第一消息中间件的切换操作时,根据所述切换操作确定切换的第二消息中间件以及所述第二消息中间件对应的第二依赖包;根据所述第二依赖包,激活所述第二消息中间件对应的适配器。
在一个实施例中,所述处理器在实现根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数时,用于实现:
当所述目标适配器为第一类适配器时,确定待调用的所述初始处理函数为所述第一消息中间件中的初始生产消息函数;当所述目标适配器为第二类适配器时,确定待调用的所述初始处理函数为所述第一消息中间件中的初始消费消息函数。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项消息处理方法。
例如,该程序被处理器加载,可以执行如下步骤:
当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件;确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件;根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数;执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字卡(Secure Digital Card,SD Card),闪存卡(Flash Card)等。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种消息处理方法,其特征在于,包括:
当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件;
确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件;
根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数;
执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
2.根据权利要求1所述的消息处理方法,其特征在于,所述确定所述调用请求对应的目标适配器,包括:
根据所述调用请求的消息处理类型,确定所述目标适配器,其中,所述消息处理类型包括生产消息处理类型和消费消息处理类型。
3.根据权利要求2所述的消息处理方法,其特征在于,转接所述标准接口与所述第一消息中间件的适配器包括第一类适配器、第二类适配器;
所述根据所述调用请求的消息处理类型,确定所述目标适配器,包括:
当所述消息处理类型为生产消息处理类型时,将所述第一类适配器确定为所述目标适配器;
当所述消息处理类型为消费消息处理类型时,将所述第二类适配器确定为所述目标适配器。
4.根据权利要求1所述的消息处理方法,其特征在于,所述初始消息函数包括初始生产消息函数、初始消费消息函数,所述标准接口包括生产消息接口、消费消息接口;所述确定所述调用请求对应的目标适配器之前,所述方法还包括:
生成每个消息中间件对应的多个适配器,所述适配器包括第一类适配器与第二类适配器;
调用每个所述消息中间件的所述第一类适配器,将每个所述消息中间件中的初始生产消息函数映射至预设的标准生产消息函数,并将映射后的所述标准生产消息函数封装至所述生产消息接口;
调用每个所述消息中间件对应的第二类适配器,将每个所述消息中间件的初始消费消息函数映射至预设的标准消费消息函数,并将映射后的所述标准消费消息函数封装至所述消费消息接口。
5.根据权利要求4所述的消息处理方法,其特征在于,所述生成每个消息中间件对应的多个适配器之后,所述方法还包括:
获取所述第一消息中间件对应的第一依赖包;
根据所述第一依赖包,激活所述第一消息中间件对应的适配器。
6.根据权利要求5所述的消息处理方法,其特征在于,所述根据所述第一依赖包,激活所述第一消息中间件对应的适配器之后,还包括:
当检测到对所述第一依赖包或所述第一消息中间件的切换操作时,根据所述切换操作确定切换的第二消息中间件以及所述第二消息中间件对应的第二依赖包;
根据所述第二依赖包,激活所述第二消息中间件对应的适配器。
7.根据权利要求1-6任一项所述的消息处理方法,其特征在于,所述根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数,包括:
当所述目标适配器为第一类适配器时,确定待调用的所述初始处理函数为所述第一消息中间件中的初始生产消息函数;
当所述目标适配器为第二类适配器时,确定待调用的所述初始处理函数为所述第一消息中间件中的初始消费消息函数。
8.一种消息处理装置,其特征在于,包括:
消息中间件确定模块,用于当基于预设的标准接口接收到消息中间件调用请求时,确定待调用的第一消息中间件;
适配器确定模块,用于确定所述调用请求对应的目标适配器,所述目标适配器用于转接所述标准接口与所述第一消息中间件;
初始处理函数确定模块,用于根据所述目标适配器,确定所述第一消息中间件对应的待调用的初始处理函数;
标准处理函数执行模块,用于执行所述标准接口中的标准处理函数,以基于所述目标适配器调用所述初始处理函数进行消息处理,所述标准处理函数用于调用所述初始处理函数。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如权利要求1至7任一项所述的消息处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1至7任一项所述的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110914770.7A CN113626222A (zh) | 2021-08-10 | 2021-08-10 | 消息处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110914770.7A CN113626222A (zh) | 2021-08-10 | 2021-08-10 | 消息处理方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113626222A true CN113626222A (zh) | 2021-11-09 |
Family
ID=78384090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110914770.7A Pending CN113626222A (zh) | 2021-08-10 | 2021-08-10 | 消息处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113626222A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115082058A (zh) * | 2022-07-25 | 2022-09-20 | 上海富友支付服务股份有限公司 | 一种基于动态控制的虚拟账户交易管理方法及系统 |
-
2021
- 2021-08-10 CN CN202110914770.7A patent/CN113626222A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115082058A (zh) * | 2022-07-25 | 2022-09-20 | 上海富友支付服务股份有限公司 | 一种基于动态控制的虚拟账户交易管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739573B (zh) | 实现api接口调用的处理方法及装置、实现api接口的系统 | |
CN108021400B (zh) | 数据处理方法及装置、计算机存储介质及设备 | |
CN111400061A (zh) | 一种数据处理方法和系统 | |
CN112148674A (zh) | 日志数据处理方法、装置、计算机设备和存储介质 | |
CN111880948A (zh) | 数据刷新方法、装置、电子设备及计算机可读存储介质 | |
CN111858727A (zh) | 一种基于模板配置的多数据源数据导出系统及方法 | |
CN111694613A (zh) | 应用程序模块间的解耦方法、电子装置及存储介质 | |
CN113407997A (zh) | 数据脱敏方法、装置、计算机设备及存储介质 | |
CN107273226B (zh) | 在安卓系统中集成组件及调用被集成组件的方法和装置 | |
CN113626222A (zh) | 消息处理方法、装置、计算机设备和存储介质 | |
CN113434582A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN111176641B (zh) | 流程节点执行方法、装置、介质及电子设备 | |
CN111324645B (zh) | 区块链的数据处理方法及装置 | |
CN112650804A (zh) | 大数据接入方法、装置、系统及存储介质 | |
CN112463799A (zh) | 数据提取方法、装置、设备及存储介质 | |
CN112540839B (zh) | 信息变更方法、装置、电子设备及存储介质 | |
CN111258741A (zh) | 仓库任务执行的方法、分布式服务器集群及计算机设备 | |
CN113535565B (zh) | 一种接口用例生成方法、装置、设备和介质 | |
CN113419772A (zh) | 响应数据打包及拆包方法、打包装置、设备及介质 | |
CN112416619A (zh) | 一种接口配置方法、设备、终端及存储介质 | |
CN115174691B (zh) | 基于页面请求的大数据加载方法、装置、设备及介质 | |
CN113452785B (zh) | 基于离线资源的服务访问方法、装置、电子设备及介质 | |
CN115225458A (zh) | 告警通知方法、装置、电子设备及存储介质 | |
CN117056097A (zh) | 数据交互方法、系统、电子设备及存储介质 | |
CN115981632A (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 |