消息调用方法、装置、电子设备及存储介质制造方法及图纸

技术编号:38098907 阅读:11 留言:0更新日期:2023-07-06 09:15
本申请提供一种消息调用方法、装置、电子设备及存储介质。该方法包括:获取用于指示目标方法的匿名函数和与目标方法对应的目标参数,并以入参的形式将匿名函数以及目标参数设置于待封装方法中;对匿名函数执行序列化以确定序列化数据;提取序列化数据中的目标属性值,并将目标属性值保存于第一自定义类中;对第一自定义类和目标参数执行序列化以确定目标消息,并将目标消息发送至消息队列;响应于确定消费端通过消息队列获取目标消息,控制消费端对目标消息执行反序列化以确定目标参数以及第一自定义类;利用反射机制根据第一自定义类确定待封装方法以使消费端通过待封装方法调用目标方法。提出一种通用的调用方法,减少了代码量和代码维护成本。少了代码量和代码维护成本。少了代码量和代码维护成本。

【技术实现步骤摘要】
消息调用方法、装置、电子设备及存储介质


[0001]本申请涉及计算机
,尤其涉及一种消息调用方法、装置、电子设备及存储介质。

技术介绍

[0002]相关技术中,基于消息队列的异步调用方法中,消费端每接收到一种不同的信息,都需要采用多个分别与每一种消息对应的策略模式对消息进行处理,也即每多一种异步方法的调用,就需要多实现一个对应的策略,对应的就需要编写很多对应策略的代码,这也就造成了相关技术中基于消息队列的异步调用实现可读性差,在实际使用中代码量多,维护成本高,且调用方式复杂,调用效率低。

技术实现思路

[0003]有鉴于此,本申请的目的在于提出一种消息调用方法、装置、电子设备及存储介质。
[0004]基于上述目的,在第一方面,本申请提供了一种消息调用方法,所述方法包括:
[0005]获取用于指示目标方法的匿名函数和与所述目标方法对应的目标参数,并以入参的形式将所述匿名函数以及所述目标参数设置于待封装方法中;所述待封装方法,包括:消费端;
[0006]对所述匿名函数执行序列化以确定序列化数据;
[0007]提取所述序列化数据中的目标属性值,并将所述目标属性值保存于第一自定义类中;
[0008]对所述第一自定义类和所述目标参数执行序列化以确定目标消息,并将所述目标消息发送至消息队列;
[0009]响应于确定消费端通过所述消息队列获取所述目标消息,控制所述消费端对所述目标消息执行反序列化以确定所述目标参数以及所述第一自定义类;
[0010]利用反射机制根据所述第一自定义类确定所述待封装方法中的匿名函数以使所述消费端通过所述待封装方法调用所述目标方法。
[0011]在第二方面,本申请提供了一种消息调用装置,所述装置包括:
[0012]设置模块,被配置为获取用于指示目标方法的匿名函数和与所述目标方法对应的目标参数,并以入参的形式将所述匿名函数以及所述目标参数设置于待封装方法中;所述待封装方法,包括:消费端;
[0013]第一确定模块,被配置为对所述匿名函数执行序列化以确定序列化数据;
[0014]保存模块,被配置为提取所述序列化数据中的目标属性值,并将所述目标属性值保存于第一自定义类中;
[0015]第二确定模块,被配置为对所述第一自定义类和所述目标参数执行序列化以确定目标消息,并将所述目标消息发送至消息队列;
[0016]控制模块,被配置为响应于确定消费端通过所述消息队列获取所述目标消息,控制所述消费端对所述目标消息执行反序列化以确定所述目标参数以及所述第一自定义类;
[0017]调用模块,被配置为利用反射机制根据所述第一自定义类确定所述待封装方法中的匿名函数以使所述消费端通过所述待封装方法调用所述目标方法。
[0018]在第三方面,本申请提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的消息调用方法。
[0019]在第四方面,本申请提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如第一方面所述的消息调用方法。
[0020]从上面所述可以看出,本申请提供的一种消息调用方法、装置、电子设备及存储介质,获取用于指示目标方法的匿名函数以及与目标方法对应的目标参数,并以入参的形式将匿名函数以及目标参数设置于待封装方法中,其中,待封装方法,包括:消费端;进一步地,可以对匿名函数执行序列化以确定序列化数据,由于序列化数据再次序列化后的数据不支持反序列化,因此可以提取序列化数据中的目标属性值,并将该目标属性值保存在第一自定义类中;再进一步地,第一自定义类可以代替序列化数据执行序列化,也即对第一自定义类和目标参数执行序列化以确定目标消息,并将该目标消息发送至消息队列中。在确定消费端通过消息队列以监听的形式获取到目标消息时,可以控制消费端对目标消息执行反序列化,进而确定目标参数以及第一自定义类,并利用反射机制根据第一自定义类确定待封装方法中的匿名函数,进而使得消费端能够通过待封装方法调用目标方法。通过使用匿名函数实现异步的目标方法,相比于传统线程异步调用,能够提高代码的整洁程度,提高了代码的可读性,并且调用目标方法时,无论目标方法是哪些方法,均可以在调用不同目标方法时,通过对待封装方法中的匿名函数的序列化和反序列化得到其中的目标方法,不随异步的目标方法的增加而修改代码,使得每一种目标方法都可以通过本申请所提供的消息调用方法被调用,减少了代码量和代码维护成本,进一步提高了异步方法的调用效率。
附图说明
[0021]为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022]图1示出了相关技术中的异步调用方法的流程示意图。
[0023]图2示出了本申请实施例所提供的一种消息调用方法的示例性流程示意图。
[0024]图3示出了根据本申请实施例的消息调用过程示意图。
[0025]图4示出了本申请实施例所提供的一种消息调用装置的示例性结构示意图。
[0026]图5示出了本申请实施例所提供的一种电子设备的示例性结构示意图。
具体实施方式
[0027]为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照
附图,对本申请进一步详细说明。
[0028]需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
[0029]如
技术介绍
部分所述,基于消息队列的异步调用方法中,消费端每接收到一种不同的信息,都需要采用多个分别与每一种消息对应的策略模式对消息进行处理,也即每多一种异步方法的调用,就需要多实现一个对应的策略,对应的就需要编写很多对应策略的代码。
[0030]图1示出了相关技术中的异步调用方法的流程示意图。
[0031]通过专利技术人的研究发现,相关技术中,参考图1,相关技术中常用的异步调用方法是异步调用方在调用异步方法时,向消息队列发送消息,消息中带有异步方法所需的上下文环境以及参数信息,不同的异步方法消息含有唯一标识符以方便消费端本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息调用方法,其特征在于,所述方法包括:获取用于指示目标方法的匿名函数和与所述目标方法对应的目标参数,并以入参的形式将所述匿名函数以及所述目标参数设置于待封装方法中;所述待封装方法,包括:消费端;对所述匿名函数执行序列化以确定序列化数据;提取所述序列化数据中的目标属性值,并将所述目标属性值保存于第一自定义类中;对所述第一自定义类和所述目标参数执行序列化以确定目标消息,并将所述目标消息发送至消息队列;响应于确定消费端通过所述消息队列获取所述目标消息,控制所述消费端对所述目标消息执行反序列化以确定所述目标参数以及所述第一自定义类;利用反射机制根据所述第一自定义类确定所述待封装方法中的匿名函数以使所述消费端通过所述待封装方法调用所述目标方法。2.根据权利要求1所述的方法,其特征在于,所述以入参的形式将所述匿名函数以及所述目标参数设置于待封装方法中,包括:将所述目标参数的参数类型定义为泛型,将所述目标参数以入参的形式设置于所述匿名函数中;将所述匿名函数以入参的形式设置于所述待封装方法中。3.根据权利要求1所述的方法,其特征在于,所述对所述匿名函数执行序列化以确定序列化数据,包括:通过序列化将所述匿名函数由对象形式转化为字节序列形式的序列化数据;其中,所述序列化数据为二进制数据。4.根据权利要求1所述的方法,其特征在于,所述提取所述序列化数据中的目标属性值,并将所述目标属性值保存于第一自定义类中,包括:确定所述序列化数据是否支持反序列化;响应于确定所述序列化数据不支持反序列化,则提取所述序列化数据中与所述匿名函数对应的目标属性值;自定义支持序列化和反序列化的所述第一自定义类,并将所述目标属性值保存于所述第一自定义类中。5.根据权利要求1所述的方法,其特征在于,所述对所述第一自定义类和所述目标参数执行序列化以确定目标消息,包括:确定所述目标参数的数量是否为零;响应于所述目标参数的数量不为零,则调用所述目标参数以确定所述目标参数对应的实际参数类型;对所述第一自定义类和所述目标参数执行序列化以确定目标消息;其中,所述目标消息包括:所述目标参数对应的实际参数类型。6.根据权利要求5所述的方法,其特征在于,所述控制所述消...

【专利技术属性】
技术研发人员:葛明曦孔祥瑞张倩陈佳锋刘思彦
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1