消息处理方法、装置及设备与流程

文档序号:23426446发布日期:2020-12-25 11:56阅读:118来源:国知局
消息处理方法、装置及设备与流程

本发明实施例涉及通信技术领域,尤其涉及一种消息处理方法、装置及设备。



背景技术:

在客户端可以部署业务系统,例如,业务系统可以为订单系统、物流信息系统等。可以由服务端向客户端的业务系统提供业务服务。

在实际应用过程中,服务端向客户端提供业务服务之前,客户端先与服务端建立网络连接。客户端中的业务系统生成请求消息,并通过该网络连接向服务端发送该请求消息,服务端对该请求消息进行处理得到该请求消息对应的响应消息,并通过该网络连接向客户端发送该响应消息。在服务端向客户端返回该请求消息对应的响应消息之前,该网络连接需要一直保持,直至业务系统向客户端返回该请求消息对应的响应消息或者等待超时。然而,在上述过程中,在服务端向客户端返回响应消息之前,由于网络连接需要一直保持,使得上述处理方式将消耗较多的服务端资源,导致服务端资源的浪费。



技术实现要素:

本发明实施例提供一种消息处理方法、装置及设备,节省了服务端资源。

第一方面,本发明实施例提供一种消息处理方法,包括:

客户端生成请求消息对应的等待响应组件实例,所述请求消息为所述客户端中的业务系统对应的消息;

所述客户端向服务端发送所述请求消息,并断开与所述服务端之间的网络连接;

所述客户端接收所述服务端发送的所述请求消息对应的响应消息,所述响应消息为所述服务端建立与所述客户端之间的网络连接后发送的消息;

所述客户端通过所述等待响应组件实例向所述业务系统发送所述响应消息。

在一种可能的实施方式中,所述客户端向服务端发送所述请求消息之前,还包括:

所述客户端生成所述请求消息对应的请求标识;

所述客户端将所述请求标识和所述等待响应组件实例对应存储至预设存储空间。

在一种可能的实施方式中,所述客户端将所述请求标识和所述等待响应组件实例对应存储之后,还包括:

所述客户端获取将所述请求标识和所述等待响应组件实例对应存储至预设存储空间的第一时刻;

所述客户端获取所述第一时刻和当前时刻的时间差值;

若所述时间差值大于或等于预设时长,则所述客户端在所述预设存储空间删除所述请求标识和所述等待响应组件实例。

在一种可能的实施方式中,所述客户端将所述请求标识和所述等待响应组件实例对应存储至预设存储空间,包括:

所述客户端将所述请求标识和所述等待响应组件实例以键值kv的形式存储至所述预设存储空间,所述键为所述请求标识,所述值为所述等待响应组件实例。

在一种可能的实施方式中,所述客户端通过所述等待响应组件实例向所述业务系统发送所述响应消息之前,还包括:

所述客户端根据所述响应消息中包括的请求标识,判断预设存储空间是否存在所述等待响应组件实例;

若是,所述客户端在所述预设存储空间获取所述等待响应组件实例;

若否,所述客户端向所述业务系统发送异常通知消息。

在一种可能的实施方式中,所述客户端在所述预设存储空间获取所述等待响应组件实例之后,还包括:

在所述预设存储空间删除所述等待响应组件实例。

在一种可能的实施方式中,所述客户端生成请求消息对应的等待响应组件实例之后,还包括:

所述客户端通过第一接口函数,将所述等待响应组件实例的状态设置为等待状态。

在一种可能的实施方式中,所述客户端通过所述等待响应组件实例向所述业务系统发送所述响应消息,包括:

所述客户端根据所述响应消息调用第二接口函数,所述响应消息为所述第二接口函数的输入参数;

所述客户端根据所述第二接口函数,控制所述第一接口函数返回所述响应消息,以实现向所述业务系统发送所述响应消息。

在一种可能的实施方式中,客户端生成请求消息对应的等待响应组件实例之前,还包括:

所述业务系统根据所述请求消息调用第三接口函数,所述请求消息为所述第三接口函数的输入参数;

所述客户端根据所述第三接口函数获取所述请求消息。

第二方面,本发明实施例提供一种消息处理装置,包括:生成模块、发送模块、断开模块和接收模块,其中,

所述生成模块用于,生成请求消息对应的等待响应组件实例,所述请求消息为所述客户端中的业务系统对应的消息;

所述发送模块用于,向服务端发送所述请求消息;

所述断开模块用于,断开与所述服务端之间的网络连接;

所述接收模块用于,接收所述服务端发送的所述请求消息对应的响应消息,所述响应消息为所述服务端建立与所述客户端之间的网络连接后发送的消息;

所述发送模块还用于,通过所述等待响应组件实例向所述业务系统发送所述响应消息。

在一种可能的实施方式中,所述装置还包括存储模块,其中,

所述生成模块还用于,在所述发送模块向服务端发送所述请求消息之前,生成所述请求消息对应的请求标识;

所述存储模块还用于,将所述请求标识和所述等待响应组件实例对应存储至预设存储空间。

在一种可能的实施方式中,所述装置还包括获取第一获取模块和删除模块,其中,

所述第一获取模块用于,在所述存储模块将所述请求标识和所述等待响应组件实例对应存储之后,获取将所述请求标识和所述等待响应组件实例对应存储至预设存储空间的第一时刻,以及获取所述第一时刻和当前时刻的时间差值;

所述删除模块用于,在所述时间差值大于或等于预设时长时,在所述预设存储空间删除所述请求标识和所述等待响应组件实例。

在一种可能的实施方式中,所述存储模块具体用于:

将所述请求标识和所述等待响应组件实例以键值kv的形式存储至所述预设存储空间,所述键为所述请求标识,所述值为所述等待响应组件实例。

在一种可能的实施方式中,所述装置还包括判断模块和第二获取模块,其中,

所述判断模块用于,在所述发送模块通过所述等待响应组件实例向所述业务系统发送所述响应消息之前,根据所述响应消息中包括的请求标识,判断预设存储空间是否存在所述等待响应组件实例;

所述第二获取模块用于,在所述判断模块判断所述预设存储空间存在所述等待响应组件实例时,在所述预设存储空间获取所述等待响应组件实例;

所述发送模块还用于,在所述判断模块判断所述预设存储空间不存在所述等待响应组件实例时,向所述业务系统发送异常通知消息。

在一种可能的实施方式中,所述删除模块还用于,在所述第二获取模块在所述预设存储空间获取所述等待响应组件实例之后,在所述预设存储空间删除所述等待响应组件实例。

在一种可能的实施方式中,所述装置还包括设置模块,其中,

所述设置模块用于,在所述生成模块生成请求消息对应的等待响应组件实例之后,通过第一接口函数,将所述等待响应组件实例的状态设置为等待状态。

在一种可能的实施方式中,所述发送模块具体用于:

根据所述响应消息调用第二接口函数,所述响应消息为所述第二接口函数的输入参数;

根据所述第二接口函数,控制所述第一接口函数返回所述响应消息,以实现向所述业务系统发送所述响应消息。

在一种可能的实施方式中,所述装置还包括第三获取模块,在所述生成模块生成请求消息对应的等待响应组件实例之前,所述第三获取模块用于:

根据所述请求消息调用第三接口函数,所述请求消息为所述第三接口函数的输入参数;

根据所述第三接口函数获取所述请求消息。

第三方面,本发明实施例提供一种消息处理方法,包括:

服务端接收客户端发送的请求消息;

所述服务端断开与所述客户端之间的连接;

所述服务端对所述请求消息进行处理,得到所述请求消息对应的响应消息;

所述服务端与所述客户端建立连接,并向所述客户端发送所述响应消息。

第四方面,本发明实施例提供一种消息处理装置,包括接收模块、断开模块、处理模块、建立模块和发送模块,其中,

所述接收模块用于,接收客户端发送的请求消息;

所述断开模块用于,断开与所述客户端之间的连接;

所述处理模块用于,对所述请求消息进行处理,得到所述请求消息对应的响应消息;

所述建立模块用于,与所述客户端建立连接;

所述发送模块用于,向所述客户端发送所述响应消息。

第五方面,本发明实施例提供一种消息处理装置,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的消息处理方法。

第六方面,本发明实施例提供一种可读存储介质,包括程序或指令,当所述程序或指令在计算机上运行时,如上述第一方面任意一项所述的消息处理方法被执行。

本申请实施例提供的消息处理方法、装置及设备,在客户端向服务端发送请求消息之后,客户端便断开与服务端之间的网络连接,在服务端向客户端发送响应消息时,再建立与客户端之间的网络连接,并通过该网络连接向客户端发送响应消息,以实现对消息进行异步处理。由于客户端包括该请求消息对应的等待响应组件实例,因此,通过该等待响应组件实例,可以准确的将该响应消息返回至业务系统。在上述过程中,在客户端向服务端发送请求消息之后、以及接收服务端发送的响应消息之前,可以断开客户端与服务端之间的网络连接,减少了对服务端的网络连接资源的占用,进而节省了服务端资源。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的消息处理方法的架构图;

图2为本发明实施例提供的一种消息处理方法的流程示意图;

图3为本发明实施例提供的客户端组件的示意图;

图4为本发明实施例提供的另一种消息处理方法的流程示意图;

图5为本发明实施例提供的一种消息处理装置的结构示意图;

图6为本发明实施例提供的另一种消息处理装置的结构示意图;

图7为本发明实施例提供的消息处理装置的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的消息处理方法的架构图。请参见图1,包括客户端101和服务端102,客户端101中设置有业务系统。例如,业务系统可以为订单系统、物流信息系统等。可选的,客户端101和服务端102均可以为部署在服务器中。

当客户端101需要服务端102为其业务系统提供业务服务时,客户端101与服务端102建立网络连接。客户端101中的业务系统可以生成请求消息,该请求消息用于请求服务端102为其提供业务服务。在业务系统生成请求消息之后,客户端101生成该请求消息对应的等待响应组件实例,该等待响应组件实例用于等待该请求消息对应的响应消息。客户端101通过网络连接向服务端102发送该请求消息。在客户端101向服务端102发送请求消息之后,客户端101与服务端102之间断开网络连接。

服务端102接收到请求消息之后,服务端102对请求消息进行处理得到响应消息。服务端102建立与客户端101之间的网络连接,并通过该网络连接向客户端101发送给响应消息,客户端101接收到服务端102发送的响应消息之后,客户端101通过等待响应组件实例向业务系统发送该响应消息。

在本申请中,在客户端向服务端发送请求消息之后,客户端便断开与服务端之间的连接,在服务端向客户端发送响应消息时,再建立与客户端之间的网络连接,并通过该网络连接向客户端发送响应消息,以实现对消息进行异步处理。由于客户端包括该请求消息对应的等待响应组件实例,因此,通过该等待响应组件实例,可以准确的将该响应消息返回至业务系统。在上述过程中,在客户端向服务端发送请求消息之后、以及接收服务端发送的响应消息之前,可以断开客户端与服务端之间的网络连接,减少了对服务端的网络连接资源的占用,进而节省了服务端资源。

下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容,在不同的实施例中不再进行重复说明。

图2为本发明实施例提供的一种消息处理方法的流程示意图。请参见图2,该方法可以包括:

s201、客户端获取客户端中的业务系统对应的请求消息。

可选的,在发明实施例中,可以将发送请求消息的设备称为客户端,该客户端可以部署在服务器中。

可选的,业务系统可以为订单系统、物流信息系统等。

业务系统对应的请求消息可以为业务系统生成的请求消息。例如,业务系统可以根据用户在客户端中输入的操作生成请求消息。

例如,当业务系统为订单系统时,业务系统对应的请求消息可以为订单查询请求消息、订单提交请求消息等。

s202、客户端生成请求消息对应的等待响应组件实例。

其中,请求消息对应的等待响应组件实例用于等待该请求消息对应的响应消息、以及将该响应消息返回(发送)给业务系统。

可选的,请求消息与等待响应组件实例之间具有一一对应关系。

可选的,等待响应组件实例可以为一个实例化的函数,例如,函数具有预设功能,在根据请求消息对该函数进行实例化得到一个等待响应组件实例之后,该等待响应组件实例可以对该请求消息执行预设功能。

例如,在生成一个请求消息对应的等待响应组件实例之后,该请求消息对应的等待响应组件实例可以对该请求消息进行阻塞,并等待服务端返回的响应消息,并将响应消息返回给业务系统的本次请求,即,使得业务系统获取请求消息对应的响应消息。若等待响应组件实例在一定的时长内未收到服务端返回的响应消息,则等待响应组件实例还可以触发超时机制,向客户端抛出异常,以使客户端处理该异常。

客户端在生成等待响应组件实例之后,可以将该等待响应组件实例设置为等待状态,若该等待响应组件等待预设时长之后,仍未获取到服务端发送的该请求消息对应的响应消息,则可以删除该等待响应组件实例,并向业务系统发送异常消息,例如,可以通过异常处理接口向业务系统发送异常消息。若在预设时长之内,该等待响应组件实例获取到服务端发送的该请求消息对应的响应消息,则该等待响应组件实例可以向业务系统发送该响应消息。

s203、客户端向服务端发送请求消息。

可选的,在s203之前,客户端与服务端之间已经建立了网络连接。相应的,客户端可以通过该网络连接向服务端发送请求消息。

s204、客户端断开与服务端之间的网络连接。

s205、服务端对请求消息进行处理,得到请求消息对应的响应消息。

在服务端接收到请求消息之后,若服务端当前不存在空闲的资源对该请求消息进行处理,则服务端可以先缓存该请求消息,当服务端存在空闲资源时再处理该请求消息。

可选的,若服务端可以对请求消息正常处理,则服务端对请求消息进行处理得到的响应消息为正常处理结果。若服务端无法对该请求消息进行正常处理,则服务端对请求消息进行处理得到的响应消息为服务端上报的异常处理结果。即,响应消息有可能为正常处理结果,有可能为异常处理结果。

s206、服务端建立与客户端之间的网络连接。

其中,s206中的网络连接与s203中客户端发送请求消息所依据的网络连接不同。

s207、服务端向客户端发送请求消息对应的响应消息。

其中,服务端根据s206中建立的网络连接向客户端发送请求消息对应的响应消息。

s208、客户端通过等待响应组件实例向业务系统发送响应消息。

由于该等待响应组件实例与请求消息对应,且该请求消息为业务系统对应的消息,因此,该等待响应组件实例可以将该请求消息对应的响应消息返回给业务系统。

本申请实施例提供的消息处理方法,在客户端向服务端发送请求消息之后,客户端便断开与服务端之间的网络连接,在服务端向客户端发送响应消息时,再建立与客户端之间的网络连接,并通过该网络连接向客户端发送响应消息,以实现对消息进行异步处理。由于客户端包括该请求消息对应的等待响应组件实例,因此,通过该等待响应组件实例,可以准确的将该响应消息返回至业务系统。在上述过程中,在客户端向服务端发送请求消息之后、以及接收服务端发送的响应消息之前,可以断开客户端与服务端之间的网络连接,减少了对服务端的网络连接资源的占用,进而节省了服务端资源。

可选的,可以在客户端设置客户端组件,通过该多个组件实现上述对消息的异步处理过程。下面,结合图3对客户端组件进行说明。

图3为本发明实施例提供的客户端组件的示意图。请参见图3,客户端组件包括:业务调用接口组件、请求标识生成组件、请求注册组件、通信组件和回调接口组件。

可选的,业务调用接口组件用于向业务系统提供发送请求消息的接口。业务系统通过业务调用接口可以发送任何类型的请求消息。为了防止序列化和反序列失败,客户端(业务系统)和服务端具有相同的消息类型。其中,序列化是指将代码(例如java代码等)形式的消息(例如请求消息、响应消息等)转换为适合在网络中传输的二进制字节流,反序列化是指将在网络中接收到的二进制字节流转换为代码(例如java代码等)形式的消息(例如请求消息、响应消息等)。

可选的,业务调用接口组件中可以包括如下接口函数,业务系统可以调用如下接口函数,以请求客户端发送请求消息。业务调用接口组件中的接口函数的定义如表1所示:

表1

请参见表1,业务调用接口组件中的接口函数的名称为call,业务系统可以调用该call接口函数以请求客户端发送请求消息,在业务系统调用call接口函数时,业务系统向call接口函数传递的参数包括请求消息(message)和返回值类型(respclass),在业务系统调用该call接口函数之后,客户端获取到通过该call接口函数传递的请求消息。

可选的,请求标识生成组件用于生成请求消息对应的请求标识。

可选的,等待响应组件用于生成请求消息对应的等待响应组件实例,等待响应组件实例可以将客户端的请求消息进行阻塞,并等待服务端返回的响应消息,并将响应消息返回给业务系统的本次请求。若等待响应组件实例在一定的时长内未收到服务端返回的响应消息,则等待响应组件实例可以触发超时机制,向客户端抛出异常,以使客户端处理该异常。

可选的,等待响应组件中可以包括如下接口函数,可以通过如下接口函数以实现等待响应组件实例的上述功能。等待响应组件中的接口函数的定义如表2所示:

表2

请参见表2,等待响应组件中的接口函数包括get接口函数、notify接口函数和notifyex接口函数,在根据请求消息调用call函数之后,调用get接口函数,以使get接口函数处于等待状态(即,get接口函数不返回)。

在客户端接收到服务端发送的正常处理结果之后,根据正常处理结果调用notify接口函数,在调用notify接口函数时,向notify接口函数传递的参数为服务端返回的正常处理结果,在notify接口函数被调用之后,get接口函数返回,返回的结果为向notify接口函数传递的正常处理结果,get接口函数返回之后,业务系统获取得到服务端返回的正常处理结果。

在客户端接收到服务端发送的异常处理结果之后,根据异常处理结果调用notifyex接口函数,在调用notifyex接口函数时,向notifyex接口函数传递的参数为服务端返回的异常处理结果,在notifyex接口函数被调用之后,get接口函数返回,返回的结果为向notifyex接口函数传递的异常处理结果,get接口函数返回之后,业务系统获取得到服务端返回的异常处理结果。

可选的,可以使用java中的countdownlatch来实现等待阻塞,每个等待响应组件实例中包含一个countdownlatch实例,可以通过如下代码创建一个countdownlatch实例:

privatefinalcountdownlatchlatch=newcountdownlatch(1);

在创建countdownlatch实例时,可以设置初始值为1。

在调用get接口函数之后,可以通过如下代码使得get接口函数处理等待状态:

latch.await(timeout,timeunit.milliseconds);

在调用notify接口函数或者notifyex接口函数之后,可以执行如下代码:

latch.countdown();

通过执行上述代码,可以使得初始值减1,得到0,当值为0时,get接口函数返回。

可选的,请求注册组件可以保存每个请求消息对应的等待响应组件实例,例如,请求注册组件可以将请求标识(请求消息对应的请求标识)和等待响应组件实例对应存储,例如,请求注册组件可以将请求标识和等待响应组件实例以键值(key-value,kv)的形式存储至预设存储空间。例如,可以将请求标识和等待响应组件实例以kv的形式存储至map表中。例如,可以通过如下代码实现上述功能:

privatefinalconcurrenthashmap<string,response<?>>responses=newconcurrenthashmap<string,response<?>>();

可选的,请求注册组件中包括如下接口函数,通过如下接口函数可以实现请求注册组件的上述功能。请求注册组件中的接口函数的定义可以如表3所示:

表3

请参见表3,请求注册组件中包括register接口函数和pop接口函数。在生成一个等待响应组件实例之后,可以调用register接口函数,并将该等待响应组件实例传递至该register接口函数,以使register接口函数在预设存储空间存储该等待响应组件实例。当一个等待响应组件实例的等待时长大于预设时长时,或者等待响应组件实例获取到服务端发送的响应消息之后,调用pop接口函数,并将请求标识传递至pop接口函数,pop接口函数根据请求标识获取等待响应组件实例,并在预设存储空间删除等待响应组件实例。

可选的,通信组件可以使得客户端向服务端发送请求消息。即,客户端可以通过该通信组件向服务端发送请求消息。当服务端为多机部署时,该通信组件可以实现多机分发的软负载(软件功能)。由于客户端与服务端采用网络通信,因此,通信组件还可以对请求消息序列化,以及对接收到的响应消息反序列化。

可选的,回调接口组件可以接收服务端发送的响应消息,响应消息中携带请求标识。回调接口组件可以根据响应消息中的请求标识在预设存储空间获取等待响应组件实例,并通过等待响应组件实例向业务系统返回响应消息。若服务端的响应时间过长(服务端在收到请求消息之后的较长时段之后向客户端发送响应消息),则预设存储空间中对应的等待响应组件实例被删除,则回调接口组件无法在预设存储空间中获取得到等待响应组件实例,则回调接口组件可以通过统一的异常处理接口向业务系统发送异常通知,以使业务系统处理该异常通知,回调接口组件还可以打印日志。为了使得服务端调用回调接口组件的性能较高,回调接口组件可以在收到响应消息后使用异步的方式进行逻辑处理。

可选的,可以在服务端设置由回调服务端组件,该回调服务端组件用于向客户端中业务系统返回响应消息。该回调服务端组件可以包括如下表4所示的接口函数:

表4

请参见表4,回调服务端组件可以通过response接口函数响应正常处理结果,通过responseex接口函数响应异常处理结果。

可选的,服务端中还可以包括通信组件,通信组件可以使得服务端向客户端发送响应消息。响应消息的目标地址可以通过表4中的参数获取,例如,目标地址为客户端的地址,客户端的地址可以为客户端的网络地址。由于客户端与服务端采用网络通信,因此,通信组件还可以对响应消息序列化,以及对接收到的请求消息反序列化。

在上述客户端和服务端的组件架构下,可以通过如下可行的实现方式实现消息处理,具体的,请参见图4所示的实施例。

图4为本发明实施例提供的另一种消息处理方法的流程示意图。请参见图4,该方法可以包括:

s401、客户端获取业务系统生成请求消息。

可选的,在业务系统生成请求消息之后,可以根据请求消息调用call接口函数。其中,call接口函数为第三接口函数。

在业务系统调用call接口函数时,将生成的请求消息传递至call接口函数中。在业务系统调用call接口函数之后,客户端可以获取得到call接口函数中的请求消息。

可选的,在调用call接口函数之后,call接口函数内部调用get函数,以使get函数处理等待状态。

s402、客户端生成请求消息对应的请求标识。

可选的,客户端可以调用请求标识生成组件,以使请求标识生成组件生成该请求消息对应的请求标识。请求标识可以唯一标识一个请求消息。

s403、客户端生成请求消息对应的等待响应组件实例。

可选的,客户端可以通过等待响应组件生成请求消息对应的等待响应组件实例。

可选的,等待响应组件实例中可以包括请求标识。

s404、客户端将请求标识和等待响应组件实例对应存储至预设存储空间。

可选的,客户端可以通过请求注册组件将请求标识和等待响应组件实例对应存储至预设存储空间。

例如,客户端可以通过请求注册组件将请求标识和等待响应组件实例以kv的形式存储至所述预设存储空间。

例如,可以调用register接口函数,并将等待响应组件实例传递至该register接口函数,以使register接口函数将请求标识和等待响应组件实例以kv的形式存储至所述预设存储空间。

可选的,在客户端通过请求注册组件将请求标识和等待响应组件实例对应存储至预设存储空间之后,还可以通过请求注册组件监控该等待响应组件实例的等待时长是否大于预设时长,若是,则在预设存储空间删除该等待响应组件实例。

例如,在确定等待响应组件实例的等待时长大于预设时长时,可以调用pop接口函数,并向pop接口函数传递请求标识,pop接口函数根据请求标识删除等待响应组件实例。

s405、客户端向服务端发送请求消息。

可选的,客户端可以通过通信组件向服务端发送该请求消息。

s406、客户端断开与服务端之间的网络连接。

s407、服务端对请求消息进行处理,得到请求消息对应的响应消息。

需要说明的是,s407的执行过程可以参见s205的执行过程,此处不再进行赘述。

s408、服务端建立与客户端之间的网络连接。

s409、服务端向客户端发送响应消息。

可选的,服务端可以通过回调服务端组件返回响应消息,并通过通信组件向客户端发送响应消息。

例如,当响应消息为正常处理结果时,服务端可以调用response接口函数以返回响应消息。当响应消息为异常处理结果时,服务端可以调用responseex接口函数以返回响应消息。

可选的,服务端向客户端发送响应消息之后,客户端可以通过回调接口组件获取响应消息。

可选的,响应消息中包括请求标识。

s410、客户端根据请求标识获取等待响应组件实例。

可选的,客户端可以调用pop接口函数,并向接口函数中传递请求标识,以获取请求标识对应的等待响应组件实例,并在预设存储空间删除该等待响应组件实例。

s411、客户端通过等待响应组件实例向业务系统返回响应消息。

可选的,当响应消息为正常处理结果,客户端可以调用等待响应组件的notify接口函数,并将响应消息传递至该notify接口函数。在notify接口函数被调用之后,get接口函数返回,返回值为向notify接口函数传递的响应消息,get接口函数的返回值返回至业务系统。

可选的,当响应消息为异常处理结果,客户端可以调用等待响应组件的notifyex接口函数,并将响应消息传递至该notifyex接口函数。在notifyex接口函数被调用之后,get接口函数返回,返回值为向notifyex接口函数传递的响应消息,get接口函数的返回值返回至业务系统。

其中,get接口函数为第一接口函数,notify接口函数或notifyex接口函数为第二接口函数

图5为本发明实施例提供的一种消息处理装置的结构示意图。请参见图5,该消息处理装置10可以包括:生成模块11、发送模块12、断开模块13和接收模块14,其中,

所述生成模块11用于,生成请求消息对应的等待响应组件实例,所述请求消息为所述客户端中的业务系统对应的消息;

所述发送模块12用于,向服务端发送所述请求消息;

所述断开模块13用于,断开与所述服务端之间的网络连接;

所述接收模块14用于,接收所述服务端发送的所述请求消息对应的响应消息,所述响应消息为所述服务端建立与所述客户端之间的网络连接后发送的消息;

所述发送模块12还用于,通过所述等待响应组件实例向所述业务系统发送所述响应消息。

本发明实施例提供的消息处理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。

图6为本发明实施例提供的另一种消息处理装置的结构示意图。在图5所示实施例的基础上,请参见图6,消息处理装置10还包括存储模块15,其中,

所述生成模块11还用于,在所述发送模块12向服务端发送所述请求消息之前,生成所述请求消息对应的请求标识;

所述存储模块15还用于,将所述请求标识和所述等待响应组件实例对应存储至预设存储空间。

在一种可能的实施方式中,消息处理装置10还包括获取第一获取模块16和删除模块17,其中,

所述第一获取模块16用于,在所述存储模块将所述请求标识和所述等待响应组件实例对应存储之后,获取将所述请求标识和所述等待响应组件实例对应存储至预设存储空间的第一时刻,以及获取所述第一时刻和当前时刻的时间差值;

所述删除模块17用于,在所述时间差值大于或等于预设时长时,在所述预设存储空间删除所述请求标识和所述等待响应组件实例。

在一种可能的实施方式中,所述存储模块15具体用于:

将所述请求标识和所述等待响应组件实例以键值kv的形式存储至所述预设存储空间,所述键为所述请求标识,所述值为所述等待响应组件实例。

在一种可能的实施方式中,消息处理装置10还包括判断模块18和第二获取模块19,其中,

所述判断模块18用于,在所述发送模块12通过所述等待响应组件实例向所述业务系统发送所述响应消息之前,根据所述响应消息中包括的请求标识,判断预设存储空间是否存在所述等待响应组件实例;

所述第二获取模块19用于,在所述判断模块18判断所述预设存储空间存在所述等待响应组件实例时,在所述预设存储空间获取所述等待响应组件实例;

所述发送模块12还用于,在所述判断模块18判断所述预设存储空间不存在所述等待响应组件实例时,向所述业务系统发送异常通知消息。

在一种可能的实施方式中,所述删除模块17还用于,在所述第二获取模块19在所述预设存储空间获取所述等待响应组件实例之后,在所述预设存储空间删除所述等待响应组件实例。

在一种可能的实施方式中,消息处理装置10还包括设置模块110,其中,

所述设置模块110用于,在所述生成模块11生成请求消息对应的等待响应组件实例之后,通过第一接口函数,将所述等待响应组件实例的状态设置为等待状态。

在一种可能的实施方式中,所述发送模块12具体用于:

根据所述响应消息调用第二接口函数,所述响应消息为所述第二接口函数的输入参数;

根据所述第二接口函数,控制所述第一接口函数返回所述响应消息,以实现向所述业务系统发送所述响应消息。

在一种可能的实施方式中,所述装置还包括第三获取模块111,在所述生成模块11生成请求消息对应的等待响应组件实例之前,所述第三获取模块111用于:

根据所述请求消息调用第三接口函数,所述请求消息为所述第三接口函数的输入参数;

根据所述第三接口函数获取所述请求消息。

本发明实施例提供的消息处理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。

图7为本发明实施例提供的消息处理装置的硬件结构示意图,如图7所示,该消息处理装置20包括:至少一个处理器21、存储器22、发送器23和接收器24。其中,处理器21、存储器22、发送器23和接收器24通过总线25连接。

在具体实现过程中,至少一个处理器21执行所述存储器22存储的计算机执行指令,使得至少一个处理器21执行如上的消息处理方法。

处理器21的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

在上述图7所示的实施例中,应理解,处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器。

总线可以是工业标准体系结构(industrystandardarchitecture,isa)总线、外部设备互连(peripheralcomponent,pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的消息处理方法。

上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。

一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(applicationspecificintegratedcircuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。

所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1