CN110727521A - 同步转异步调用方法、装置、系统、电子设备及可读介质 - Google Patents

同步转异步调用方法、装置、系统、电子设备及可读介质 Download PDF

Info

Publication number
CN110727521A
CN110727521A CN201810783093.8A CN201810783093A CN110727521A CN 110727521 A CN110727521 A CN 110727521A CN 201810783093 A CN201810783093 A CN 201810783093A CN 110727521 A CN110727521 A CN 110727521A
Authority
CN
China
Prior art keywords
asynchronous
request
call request
service
call
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
Application number
CN201810783093.8A
Other languages
English (en)
Inventor
何双
康胜苏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810783093.8A priority Critical patent/CN110727521A/zh
Publication of CN110727521A publication Critical patent/CN110727521A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请提供一种同步调用转异步调用的方法、装置、系统、电子设备及可读介质,该方法包括:服务调用者发送调用请求;代理类接收所述调用请求,并将所述调用请求转发至异步中间件;异步中间件将所述调用请求以异步消息的方式发送至消费者监听服务;以及消费者监听服务将所述调用请求发送至服务提供者,以便所述服务提供者响应所述调用请求。本申请的方法、系统、装置、电子设备及计算机可读介质,能够通过无侵入的方式,将被代理方法转换为使用异步处理框架实现异步处理,从而实现自由切换同步调用与异步调用。

Description

同步转异步调用方法、装置、系统、电子设备及可读介质
技术领域
本公开涉及计算机与互联网领域,尤其涉及一种同步调用转异步调 用方法、系统、装置、电子设备及计算机可读介质。
背景技术
在互联网领域,应用程序的通信常选择消息中间件,以简化其通信、 输入输出的开发。消息中间件既可简化应用程序的开发,还可带来异步 化的好处。异步调用是一种非阻塞式的调用方式,而原有的同步调用是 一种阻塞式的调用方式,即客户端(主调用法)代码一直阻塞等待直到 被服务端(被调用方)返回为止,其实现过程如图1所示。当面对基于粗粒度的服务组件时,其响应回复时间较长。面对这一场景,应考虑将 同步调用转为异步调用,以完成更有效的消息传递。
现有的同步调用转异步调用的方法通常如下:通过xml文件配置生 产者、消费者及其监听者类,以接入消息中间件。然而,上述方法具有 如下缺点:
(1)需要配置繁杂的XML文件。
(2)配置生产者、消费者过于繁琐,创建一个生产者、接入一个消 费者都需要在配置文件配置主题、生产者、监听类等信息注册。
(3)消费者:每个消费者都需要实现消费者监听类的onMessage方 法消费消息队列。实则,每个消费者解析消息都是将消息体转成业务实 体类,再执行自身业务代码。
(4)对于自产自销的消息队列,生产者通过业务代码发送消息时, 仍需要消费者实现上述(2)步骤。
因此,需要一种新的同步调用转异步调用方法、装置、系统、电子 设备及计算机可读介质。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的 理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的 信息。
发明内容
有鉴于此,本申请提供一种同步调用转异步调用方法、装置、系 统、电子设备及计算机可读介质,可以通过无侵入的方式,将被代理方 法转换为使用异步处理框架实现异步处理,从而实现自由切换同步调用 与异步调用。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分 地通过本公开的实践而习得。
根据本申请实施例的第一方面,提出一种同步调用转异步调用方 法,该方法包括:服务调用者发送调用请求;代理类接收所述调用请求, 并将所述调用请求转发至异步中间件;异步中间件将所述调用请求以异 步消息的方式发送至消费者监听服务;以及消费者监听服务将所述调用 请求发送至服务提供者,以便所述服务提供者响应所述调用请求。。
在本申请的一种示例性实施例中,还包括:所述服务提供者将所述 调用请求的返回消息发送至所述消费者监听服务;消费者监听服务将所 述返回消息发送至异步中间件;所述异步中间件将所述返回消息发送至 所述代理类;以及所述代理类将所述返回消息返送至所述服务调用者以 完成所述调用请求。
在本申请的一种示例性实施例中,代理类接收所述调用请求,并将 所述调用请求转发至异步中间件包括:所述代理类接收所述调用请求, 并将所述调用请求通过invoke函数发送至方法拦截器;所述方法拦截器 根据预先设置参数判断是否将所述调用请求转发至所述异步中间件;以 及在所述调用请求满足预先设置参数时,将所述调用请求转发至所述异 步中间件。
在本申请的一种示例性实施例中,所述方法拦截器根据预先设置参 数判断是否将所述调用请求转发至所述异步中间件包括:所述方法拦截 器根据所述方法的注解类型判断是否将所述调用请求转发至所述异步中 间件。
在本申请的一种示例性实施例中,还包括:在所述调用请求不满足 预先设置参数时,服务调用者通过同步调用方法调用所述服务提供者。
在本申请的一种示例性实施例中,将所述调用请求转发至所述异步 中间件包括:所述方法拦截器通过SendMessage函数将所述调用请求发 送至消息生产者;以及所述消息生产者将所述调用请求转发至所述异步 中间件。
在本申请的一种示例性实施例中,还包括:在初始化过程中创建代 理类、消费者监听服务、以及生产者。
在本申请的一种示例性实施例中,在初始化过程中创建代理类、消 费者监听服务、以及生产者包括:Spring core通过create函数创建代理 工厂;所述代理工厂通过create函数创建代理类、消费者监听服务、以 及生产者。
在本申请的一种示例性实施例中,在初始化过程中创建代理类、消 费者监听服务、以及生产者还包括:在创建所述消费者监听服务后,将 所述消费者监听服务注册到上下文中;以及在创建所述生产者后,将所 述生产者注册到上下文中。。
根据本申请实施例的第二方面,提出一种同步调用转异步调用的装 置,该装置包括:请求模块,用于服务调用者发送调用请求;第一转发 模块,用于代理类接收所述调用请求,并将所述调用请求转发至异步中 间件;第二转发模块,用于异步中间件将所述调用请求以异步消息的方 式发送至消费者监听服务;以及响应模块,用于消费者监听服务将所述调用请求发送至服务提供者,以便所述服务提供者响应所述调用请求。
根据本申请实施例的第三方面,提出一种用于同步调用转异步调用 的系统,该系统包括:客户端,用于发送调用请求;请求转发服务器, 用于接收所述调用请求,并将所述调用请求转发至异步中间件;异步中 间件将所述调用请求以异步消息的方式发送至消费者监听服务;消费者 监听服务将所述调用请求发送至服务器;以及服务器,用于响应所述调 用请求。
根据本申请实施例的第四方面,提出一种电子设备,该电子设备包 括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述 一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处 理器实现上述任一项所述的同步调用转异步调用的方法。
根据本申请实施例的第五方面,提出一种计算机可读介质,其上存 储有计算机程序,其特征在于,所述程序被处理器执行时实现如上述任 一项所述的同步调用转异步调用的方法。
根据本申请的同步调用转异步调用方法、装置、系统、电子设备及 计算机可读介质,能够通过无侵入的方式,将被代理方法转换为使用异 步处理框架实现异步处理,从而实现自由切换同步调用与异步调用。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的, 并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合 本申请的实施例,并与说明书一起用于解释本申请的原理。下面描述的 附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在 不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据现有技术示出的一种同步调用方法的系统架构图。
图2是根据一示例性实施例示出的一种同步调用转异步调用方法及 装置的系统框图。
图3是根据一示例性实施例示出的一种同步调用转异步调用方法的 流程图。
图4是根据一示例性实施例示出的一种同步调用转异步调用方法的 流程图。
图5是根据一示例性实施例示出的一种同步调用转异步调用方法的 流程图。
图6是根据另一示例性实施例示出的一种同步调用转异步调用方法 的系统架构图。
图7是根据另一示例性实施例示出的一种同步调用转异步调用方法 的系统架构图。
图8是根据一示例性实施例示出的一种同步调用转异步调用装置的 框图。
图9是根据另一示例性实施例示出的一种同步调用转异步调用系统 的示意图。
图10是根据一示例性实施例示出的一种用于同步调用转异步调用的 电子设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够 以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供 这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传 达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分, 因而将省略对它们的重复描述。
所描述的特征、结构或特性可以以任何合适的方式结合在一个或更 多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明 的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本 发明的技术方案而省略特定细节中的一个或更多,或者可以采用其它的 方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图仅为本发明的示意性图解,图中相同的附图标记表示相同或类 似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图不 一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现 这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实 体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实 体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和 步骤,也不是必须按所描述的顺序执行。例如,有的步骤还可以分解, 而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际 情况改变。
下面结合附图对本发明示例实施方式进行详细说明。
图2是根据一示例性实施例示出的一种同步调用转异步调用方法及 装置的系统框图。
参照图2,服务器205可以是提供各种服务的服务器,例如对用户利 用终端设备201、202、203所进行操作的应用程序提供支持的后台管理 服务器(仅为示例)。后台管理服务器可以对接收到的消息或更改请求 等数据进行分析等处理,并将处理结果(例如验证结果、用户登录结果 --仅为示例)反馈给终端设备。
服务器205可例如通过服务调用者发送调用请求;服务器205可例 如通过代理类接收调用请求,并将调用请求转发至异步中间件;服务器 205可例如通过异步中间件将调用请求以异步消息的方式发送至消费者 监听服务;服务器205可例如通过消费者监听服务将调用请求发送至服 务提供者,以便服务提供者响应调用请求。服务器205可例如通过服务 提供者将调用请求的返回消息发送至所述消费者监听服务;服务器205 可例如通过消费者监听服务将所述返回消息发送至异步中间件;服务器 205可例如通过异步中间件将返回消息发送至代理类;服务器205可例如 通过代理类将返回消息返送至所述服务调用者以完成所述调用请求。
服务器205可以是一个实体的服务器,还可例如为多个服务器组 成,服务器205中的一部分可例如作为本申请中的消息发送系统,用于 当服务调用者发送调用请求时,将调用请求以异步消息的方式发送至服 务提供者;以及服务器205中的一部分还可例如作为本申请中的消息响 应系统,用于将服务提供者发出的返回消息返送至服务调用者。
需要说明的是,本申请示例实施例所提供的同步调用转异步调用的 方法可以由服务器205执行,相应地,同步调用转异步调用的装置可以 设置于服务器205中。而提供给用户进行调用请求的生成与返回消息的 接收的请求端一般位于终端设备201、202、203中。
图3是根据一示例性实施例示出的一种同步调用转异步调用方法的 流程图。根据图3示出的同步调用转异步调用的方法,可以通过无侵入 的方式,将被代理方法转换为使用异步处理框架实现异步处理,从而实 现自由切换同步调用与异步调用。下面,将参照图3,对本申请示例性实 施例中的同步调用转异步调用方法进行说明。
在步骤S310中,服务调用者发送调用请求。其中,服务调用者可例 如为一需要与其他应用程序进行通信的应用程序,但本发明的技术方案 并不限于此。
在步骤S320中,代理类接收所述调用请求,并将调用请求转发至异 步中间件。根据示例实施例,代理类接收调用请求,并将调用请求转发 至异步中间件可以包括:代理类接收调用请求,并将调用请求通过invoke 函数发送至方法拦截器;方法拦截器根据预先设置参数判断是否将调用 请求转发至异步中间件;以及在调用请求满足预先设置参数时,将调用 请求转发至异步中间件。
其中,代理类是类的代理。代理类是将类给代理,不直接调用类的 方法。代理类目的在于解决直接访问对象是带来的问题。例如:要访问 的对象在远程的机器上,在面向对象系统中,有些对象由于某些原因(比 如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的 访问),直接访问会给使用者或系统结构带来很多麻烦。基于此,可以在访问对象时加上一个对对象的访问层,也就是代理类。invoke函数是 调用类中的方法,可以实现动态的调用。
根据示例实施例,方法拦截器根据预先设置参数判断是否将调用请 求转发至异步中间件可以包括:方法拦截器根据方法的注解类型判断是 否将调用请求转发至异步中间件。
其中,方法拦截器(MethodInterceptor)用于在某个方法被访问之前, 进行拦截并在之前或之后加入某些操作。在本申请的示例实施例中,方 法拦截器可以用于判断当前方法是否请求异步调用。其判断依据为方法 的注解(Annontation)。注解提供了一种安全的类似注释的机制,用来 将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等) 进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的 说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框 架使用。
根据示例实施例,还可以包括:在调用请求不满足预先设置参数时, 服务调用者通过同步调用方法调用服务提供者。
根据示例实施例,将调用请求转发至异步中间件可以包括:方法拦 截器通过SendMessage函数将调用请求发送至消息生产者;以及消息生 产者将所述调用请求转发至异步中间件。
其中,SendMessage函数的作用是将指定的消息发送到一个或多个窗 口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返 回。生产者(Producer)为某个消息的发送端。异步中间件是一种独立的 系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间 共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源 和网络通讯。
在步骤S330中,异步中间件将调用请求以异步消息的方式发送至消 费者监听服务。其中,消费者(Consumer)是某个消息的订阅端,即消 息订阅者。消费者监听服务是指:消费者在接收消息是,可创建一个监 听,采用回调模式接收消息。
在步骤S340中,消费者监听服务将调用请求发送至服务提供者,以 便服务提供者响应调用请求。根据示例实施例,同步调用转异步调用的 方法还可以包括:服务提供者将调用请求的返回消息发送至消费者监听 服务;消费者监听服务将返回消息发送至异步中间件;异步中间件将返 回消息发送至代理类;以及代理类将消息返送至服务调用者以完成调用 请求。
根据示例实施例,同步调用转异步调用的方法还可以包括:在初始 化过程中创建代理类、消费者监听服务、以及生产者。
根据示例实施例,在初始化过程中创建代理类、消费者监听服务、 以及生产者包括:Spring core通过create函数创建代理工厂;代理工厂 通过create函数创建代理类、消费者监听服务、以及生产者。
其中,Spring是一个开放源代码的设计层面框架,其解决的是业务 逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整 个系统应用。Core为Spring的核心组件,其中包含了很多的关键类,其 中一个重要组成部分就是定义了资源的访问方式。Create函数可以通过 静态方法创建对象。
根据示例实施例,在初始化过程中创建代理类、消费者监听服务、 以及生产者还可以包括:在创建消费者监听服务后,将消费者监听服务 注册到上下文中;以及在创建生产者后,将生产者注册到上下文中。
图4是根据一示例性实施例示出的一种同步调用转异步调用方法的 流程图。
参照图4,同步调用转异步调用的方法可以包括:
步骤S410,服务提供者将调用请求的返回消息发送至消费者监听服 务。其中,服务提供者可以是服务调用者想要传输消息的对象,服务提 供者收到消息后将该消息的响应返回至消费者监听服务。
步骤S420,消费者监听服务将返回消息发送至异步中间件。
步骤S430,异步中间件将返回消息发送至代理类。
步骤S440,代理类将返回消息返送至服务调用者以完成调用请求。 根据示例实施例,返回消息通过代理类发送至服务调用者,以完成一个 完整的消息传输过程。
根据图3、4示出的一种同步调用转异步调用方法的流程图,可以通 过更加简洁的方式将被代理方法变为异步执行方法,从而提高开发效率。 此外,该方法可以将被代理方法转换为使用异步处理框架实现异步处理, 从而获得降级处理的效果。
图5是根据一示例性实施例示出的一种同步调用转异步调用方法的 流程图。参照图5,同步调用转异步调用的方法可以包括:
步骤S510,代理类接收调用请求,并将调用请求通过invoke函数发 送至方法拦截器。
步骤S520,方法拦截器根据预先设置参数判断是否将调用请求转发 至异步中间件。根据示例实施例,方法拦截器可以根据方法的注解类型 判断是否将调用请求转发至异步中间件。方法的注解可以声明在方法的 前面,用于对其进行说明、注释。在本实施例中,方法的注解可例如说 明该方法是否需要转为异步调用。
步骤S530,在调用请求满足预先设置参数时,将调用请求转发至异 步中间件。其中,异步中间体将该调用请求以异步调用的方式传输至消 费者监听服务,以便其发送给相应的服务提供者。
根据示例实施例,在调用请求不满足预先设置参数时,服务调用者 通过同步调用方法调用服务提供者。
图6是根据另一示例性实施例示出的一种同步调用转异步调用方法 的系统架构图。
参照图6,同步调用转异步调用方法可以包括注册过程。注册过程可 以包括步骤1:代理类创建过程。
根据示例实施例,步骤1可以包括如下步骤:
步骤1.1,构建代理类。
根据示例实施例,针对JMQ类型的中间件,可以声明 RegisterJMQAnnMethod方法注解类,包含注册者类型(默认既是生产者 也是消费者)、生产或订阅的主题。
步骤1.2,构建异步消费者。
其中,消费者指消息的发送端,此处建立的为异步调用的消费者。
步骤1.3,注册异步消费者到上下文中。
其中,上下文可以存储系统的一些初始化信息。当用户需要使用相 关数据源时,可以首先获取系统的上下文,再通过一定的方式读取数据 源。
步骤1.4,构建异步生产者。
其中,生产者指消息的发送端,此处建立的为异步调用的生产者。
步骤1.5,注册异步生产者到上下文中。
根据示例实施例,可以首先根据注解判断是否需要构建异步生产者 和异步消费者,在执行步骤1.4、1.5。
图7是根据另一示例性实施例示出的一种同步调用转异步调用方法 的系统架构图。参照图7,同步调用转异步调用方法可以包括如下步骤:
步骤1,代理类代替原服务提供者接收调用请求,并转发至异步中间 件。
步骤2,异步中间件将异步消息推送给消息监听服务,由监听服务完 成真实服务者的调用。其中,BaseCustomerListener为消费监听基类,由该 类实现MessageLister的onMessage方法。定义一个Object service属性 (消费JMQ需要执行的业务类)、Methodmethod属性,通过method属 性获取方法参数泛型类型集合,将监听到的消费体转换与该业务类的方法 入参类型,调用method.invoke(service,objArr)执行消费者自身业务代码(即使用步骤1注解的非生产者注册类型的方法)。
创建RegisterJMQRequire类实现BeanPostProcessor接口,当Spring 容器完成Bean的实例化后,获取所有目标类或接口声明的所有的方法, 校验是否使用图6中注册过程中的注解,且声明注册类型为消费者,实 例化一个该类转换成消费监听类,并为其设置好方法、业务类,消费者 设置topic及监听者、重试次数等,这样就完成自动注册所有的消费者监 听。
JmqSendInterceptor拦截器拦截所有使用图6中注册过程中的注解的 方法,校验是否注册类型为生产者或两者皆是(自产自销),并发送消 息队列(注:此处可以接入JMQ统一降级服务)。
JmqRegisterAspect类,通过Aop切面获取所有使用图6中注册过程 的注解的方法,校验注解注册类型是自产自销或生产者则将方法入参转 换成Message消息体,通过MessageProducer发送到对应主题(Topic) 队列,否则按原逻辑执行方法。
其中,主题(Topic)为消息的识别串,代表一种消息类型,是全局 唯一的。主题可用于区分不同的业务消息。
图8是根据一示例性实施例示出的一种同步调用转异步调用装置的 框图。参照图8,同步调用转异步调用装置可以包括:请求模块810、第 一转发模块820、第二转发模块830、响应模块840。
在同步调用转异步调用装置中,请求模块810用于服务调用者发送 调用请求。第一转发模块820用于代理类接收调用请求,并将调用请求 转发至异步中间件。第二转发模块830用于异步中间件将调用请求以异 步消息的方式发送至消费者监听服务;响应模块840用于消费者监听服 务将调用请求发送至服务提供者,以便服务提供者响应调用请求。
根据本申请的同步调用转异步调用装置,可以通过无侵入的方式, 将被代理方法转换为使用异步处理框架实现异步处理,从而实现自由切 换同步调用与异步调用。
图9是根据另一示例性实施例示出的一种同步调用转异步调用系统 的示意图。参照图9,同步调用转异步调用系统可以包括:客户端910、 请求转发服务器920、服务器930。
在同步调用转异步调用系统中,客户端910用于发送调用请求。请 求转发服务器920用于接收调用请求,并将调用请求转发至异步中间件; 异步中间件将调用请求以异步消息的方式发送至消费者监听服务;消费 者监听服务将调用请求发送至服务器;服务器930用于响应调用请求。
根据本申请的同步调用转异步调用系统,可以通过无侵入的方式, 将被代理方法转换为使用异步处理框架实现异步处理,从而实现自由切 换同步调用与异步调用。
图10是根据一示例性实施例示出的一种用于同步调用转异步调用的 电子设备的框图。
下面参照图10来描述根据本申请的这种实施方式的电子设备1000。 图10显示的电子设备1000仅仅是一个示例,不应对本公开实施例的功 能和使用范围带来任何限制。
如图10所示,计算机系统1000包括中央处理单元(CPU)1001, 其可以根据存储在只读存储器(ROM)1002中的程序或者从储存部分 1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动 作和处理。在RAM 1003中,还存储有系统操作所需的各种程序和数据。 CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/ 输出(I/O)接口1005也连接至总线804。
以下部件连接至I/O接口1005:包括触摸屏、键盘等的输入部分 1006;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分1007; 包括闪存等的储存部分1008;以及包括诸如无线网卡、高速网卡等的通 信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动 器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如半导 体存储器、磁盘等,根据需要安装在驱动器1010上,以便于从其上读出 的计算机程序根据需要被安装入储存部分1008。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描 述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件 的方式来实现。因此,本发明实施例的技术方案可以以软件产品的形式 体现出来,该软件产品可以存储在一个非易失性存储介质(可以是 CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算设 备(可以是个人计算机、服务器、移动终端、或者智能设备等)执行根 据本发明实施例的方法。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理 的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不 表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是 例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想 到本申请的其他实施例。本申请旨在涵盖本发明的任何变型、用途或者 适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理 并包括本发明未申请的本技术领域中的公知常识或惯用技术手段。说明 书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指 出。
应当理解的是,本发明并不限于这里已经示出的详细结构、附图方 式或实现方法,相反,本发明意图涵盖包含在所附权利要求的精神和范 围内的各种修改和等效设置。

Claims (13)

1.一种用于同步调用转异步调用的方法,其特征在于,包括:
服务调用者发送调用请求;
代理类接收所述调用请求,并将所述调用请求转发至异步中间件;
异步中间件将所述调用请求以异步消息的方式发送至消费者监听服务;以及
消费者监听服务将所述调用请求发送至服务提供者,以便所述服务提供者响应所述调用请求。
2.如权利要求1所述的方法,其特征在于,还包括:
所述服务提供者将所述调用请求的返回消息发送至所述消费者监听服务;
消费者监听服务将所述返回消息发送至异步中间件;
所述异步中间件将所述返回消息发送至所述代理类;以及
所述代理类将所述返回消息返送至所述服务调用者以完成所述调用请求。
3.如权利要求1所述的方法,其特征在于,代理类接收所述调用请求,并将所述调用请求转发至异步中间件包括:
所述代理类接收所述调用请求,并将所述调用请求通过invoke函数发送至方法拦截器;
所述方法拦截器根据预先设置参数判断是否将所述调用请求转发至所述异步中间件;以及
在所述调用请求满足预先设置参数时,将所述调用请求转发至所述异步中间件。
4.如权利要求3所述的方法,其特征在于,所述方法拦截器根据预先设置参数判断是否将所述调用请求转发至所述异步中间件包括:
所述方法拦截器根据所述方法的注解类型判断是否将所述调用请求转发至所述异步中间件。
5.如权利要求3所述的方法,其特征在于,还包括:
在所述调用请求不满足预先设置参数时,服务调用者通过同步调用方法调用所述服务提供者。
6.如权利要求3所述的方法,其特征在于,将所述调用请求转发至所述异步中间件包括:
所述方法拦截器通过SendMessage函数将所述调用请求发送至消息生产者;以及
所述消息生产者将所述调用请求转发至所述异步中间件。
7.如权利要求1所述的方法,其特征在于,还包括:
在初始化过程中创建代理类、消费者监听服务、以及生产者。
8.如权利要求7所述的方法,其特征在于,在初始化过程中创建代理类、消费者监听服务、以及生产者包括:
Spring core通过create函数创建代理工厂;
所述代理工厂通过create函数创建代理类、消费者监听服务、以及生产者。
9.如权利要求7所述的方法,其特征在于,在初始化过程中创建代理类、消费者监听服务、以及生产者还包括:
在创建所述消费者监听服务后,将所述消费者监听服务注册到上下文中;以及
在创建所述生产者后,将所述生产者注册到上下文中。
10.一种用于同步调用转异步调用的装置,其特征在于,包括:
请求模块,用于服务调用者发送调用请求;
第一转发模块,用于代理类接收所述调用请求,并将所述调用请求转发至异步中间件;
第二转发模块,用于异步中间件将所述调用请求以异步消息的方式发送至消费者监听服务;以及
响应模块,用于消费者监听服务将所述调用请求发送至服务提供者,以便所述服务提供者响应所述调用请求。
11.一种用于同步调用转异步调用的系统,其特征在于,包括:
客户端,用于发送调用请求;
请求转发服务器,用于接收所述调用请求,并将所述调用请求转发至异步中间件;异步中间件将所述调用请求以异步消息的方式发送至消费者监听服务;消费者监听服务将所述调用请求发送至服务器;以及
服务器,用于响应所述调用请求。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一所述的方法。
CN201810783093.8A 2018-07-17 2018-07-17 同步转异步调用方法、装置、系统、电子设备及可读介质 Pending CN110727521A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810783093.8A CN110727521A (zh) 2018-07-17 2018-07-17 同步转异步调用方法、装置、系统、电子设备及可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810783093.8A CN110727521A (zh) 2018-07-17 2018-07-17 同步转异步调用方法、装置、系统、电子设备及可读介质

Publications (1)

Publication Number Publication Date
CN110727521A true CN110727521A (zh) 2020-01-24

Family

ID=69217416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810783093.8A Pending CN110727521A (zh) 2018-07-17 2018-07-17 同步转异步调用方法、装置、系统、电子设备及可读介质

Country Status (1)

Country Link
CN (1) CN110727521A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112231112A (zh) * 2020-08-31 2021-01-15 银盛支付服务股份有限公司 一种基于dubbo异步调用方法及装置
CN112363946A (zh) * 2020-11-24 2021-02-12 上海悦易网络信息技术有限公司 一种基于业务系统的消息转发方法及设备
CN112738173A (zh) * 2020-12-23 2021-04-30 上海创远仪器技术股份有限公司 无线电跨系统间实现可扩展异步消息处理的方法、系统、装置及存储介质
CN113296898A (zh) * 2021-05-26 2021-08-24 北京京东振世信息技术有限公司 异步任务处理方法、装置、电子设备和存储介质
CN113608896A (zh) * 2021-08-12 2021-11-05 重庆紫光华山智安科技有限公司 一种动态切换数据流的方法、系统、介质及终端
CN114979285A (zh) * 2022-05-10 2022-08-30 百果园技术(新加坡)有限公司 服务调用方法、装置、设备、系统、存储介质及产品

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112231112A (zh) * 2020-08-31 2021-01-15 银盛支付服务股份有限公司 一种基于dubbo异步调用方法及装置
CN112363946A (zh) * 2020-11-24 2021-02-12 上海悦易网络信息技术有限公司 一种基于业务系统的消息转发方法及设备
CN112363946B (zh) * 2020-11-24 2024-04-16 上海万物新生环保科技集团有限公司 一种基于业务系统的消息转发方法及设备
CN112738173A (zh) * 2020-12-23 2021-04-30 上海创远仪器技术股份有限公司 无线电跨系统间实现可扩展异步消息处理的方法、系统、装置及存储介质
CN113296898A (zh) * 2021-05-26 2021-08-24 北京京东振世信息技术有限公司 异步任务处理方法、装置、电子设备和存储介质
CN113296898B (zh) * 2021-05-26 2024-05-17 北京京东振世信息技术有限公司 异步任务处理方法、装置、电子设备和存储介质
CN113608896A (zh) * 2021-08-12 2021-11-05 重庆紫光华山智安科技有限公司 一种动态切换数据流的方法、系统、介质及终端
CN113608896B (zh) * 2021-08-12 2023-09-08 重庆紫光华山智安科技有限公司 一种动态切换数据流的方法、系统、介质及终端
CN114979285A (zh) * 2022-05-10 2022-08-30 百果园技术(新加坡)有限公司 服务调用方法、装置、设备、系统、存储介质及产品
CN114979285B (zh) * 2022-05-10 2024-02-27 百果园技术(新加坡)有限公司 服务调用方法、装置、设备、系统、存储介质及产品

Similar Documents

Publication Publication Date Title
CN110727521A (zh) 同步转异步调用方法、装置、系统、电子设备及可读介质
US11936609B2 (en) System and method for enabling real-time eventing
US9479400B2 (en) Servlet API and method for XMPP protocol
EP1986369A1 (en) End user control configuration system with dynamic user interface
US10693816B2 (en) Communication methods and systems, electronic devices, and computer clusters
US10318359B2 (en) Techniques to remotely access object events
CN110933075B (zh) 服务调用方法、装置、电子设备及存储介质
CN102077543A (zh) 计算机网络中用于用户设备间的资源共享的方法和装置
Aijaz et al. Enabling high performance mobile web services provisioning
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
TW202119833A (zh) 無線通訊核心網路與在其中分析用戶設備移動的方法
CN112835632B (zh) 一种端能力的调用方法、设备和计算机存储介质
EP2686981B1 (en) Method and system for managing contact information in a universal plug and play home network environment
CN109766315A (zh) 文件展示方法及终端、计算机存储介质、计算机设备
CN110928706A (zh) 小程序交互方法、装置、电子设备及存储介质
TW200803282A (en) Technique for controlling external communication of embedded device using proxy server
CN113472687A (zh) 一种数据处理方法和装置
US8676902B2 (en) System and method for service oriented email client application
WO2023070834A1 (zh) 小程序与网页通信的方法、相关设备及系统
CN113626001A (zh) 一种基于脚本的api动态编排方法及装置
Shriwas et al. Comparative Study of Cloud Computing and Mobile Cloud Computing
US20160248823A1 (en) Messaging protocol
CN114020494A (zh) 支付状态的处理方法及装置
KR20160131581A (ko) 이동셀 환경 기반 콘텐츠 공유 장치 및 방법
Shriwas et al. Cloud computing Vs mobile cloud computing

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