消息处理方法、服务器、设备、系统及存储介质与流程

文档序号:25957276发布日期:2021-07-20 17:16阅读:80来源:国知局
消息处理方法、服务器、设备、系统及存储介质与流程

本申请涉及通信技术领域,具体涉及一种消息处理方法、服务器、设备、系统及存储介质。



背景技术:

目前,在app(application,应用程序)客户端与相应服务器进行消息通讯时,一种消息处理方式是采用消息队列,消息发送方将消息发送至消息队列,消息接收方从消息队列获取消息发送方发送的消息。然而,由于服务器为多节点架构,服务器发送到消息队列的消息可能会被不确定的其他客户端实例监听到,因此,消息存在安全风险。

因此,如何提高消息的安全性成为亟待解决的问题。



技术实现要素:

本申请实施例提供一种消息处理方法、服务器、设备、系统及存储介质,可以提高消息的安全性。

第一方面,本申请实施例提供了一种消息处理方法,应用于服务器,包括:

发送第一请求消息至消息队列,以供设备通过监听所述消息队列获取所述第一请求消息,对所述第一请求消息进行逻辑处理,获得对应的第一响应消息,并将所述第一响应消息发送至所述消息队列;

监听所述消息队列,获取所述第一响应消息;

若所述第一请求消息的下发场景为所述服务器根据客户端发起的调用请求下发,则将所述第一响应消息写入缓存中,以供所述客户端轮询所述缓存,获取所述第一响应消息。

第二方面,本申请实施例提供了一种服务器,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行上述应用于服务器的消息处理方法。

第三方面,本申请实施例提供了一种消息处理方法,应用于设备,包括:

监听消息队列,获取服务器发送至所述消息队列的第一请求消息;

对所述第一请求消息进行逻辑处理,获得对应的第一响应消息,并将所述第一响应消息发送至所述消息队列,以供所述服务器监听所述消息队列,获取所述第一响应消息,若所述第一请求消息的下发场景为所述服务器根据客户端发起的调用请求下发,则将所述第一响应消息写入缓存中,所述客户端轮询所述缓存,获取所述第一响应消息。

第四方面,本申请实施例提供了一种设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行上述应用于设备的消息处理方法。

第五方面,本申请实施例提供了一种消息处理系统,包括上述的服务器和设备。

第六方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时使所述处理器实现上述的消息处理方法。

本申请实施例提供了一种消息处理方法、服务器、设备、系统及存储介质,服务器根据客户端发起的调用请求下发第一请求消息至消息队列,设备通过监听消息队列获取第一请求消息,对第一请求消息进行逻辑处理,获得对应的第一响应消息,并将第一响应消息发送至消息队列;服务器监听消息队列,获取第一响应消息,将第一响应消息写入缓存中,客户端轮询缓存获取第一响应消息,由于第一响应消息并没有发送至消息队列,避免了被其他实例监听,从而提高了消息的安全性。

附图说明

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

图1是本申请一实施例提供的一种消息处理系统的示意性框图;

图2是本申请一实施例提供的一种消息处理方法的步骤示意流程图;

图3是本申请一实施例提供的一种消息下行的流程示意图;

图4是本申请一实施例提供的一种消息上行的流程示意图;

图5是本申请一实施例提供的另一种消息处理方法的步骤示意流程图;

图6是本申请一实施例提供的一种服务器的示意性框图;

图7是本申请一实施例提供的一种设备的示意性框图。

具体实施方式

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

附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。

应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

在app客户端与相应服务器进行消息通讯时,一种消息处理方式是采用消息队列,消息发送方将消息发送至消息队列,消息接收方从消息队列获取消息发送方发送的消息。然而,由于服务器为多节点架构,服务器发送到消息队列的消息可能会被不确定的其他客户端实例监听到,因此,消息存在安全风险。

为了解决上述问题,本申请的实施例提供了一种消息处理方法、服务器、设备、系统及存储介质,用于提高消息的安全性。

请参阅图1,图1是本申请一实施例提供的一种消息处理系统的示意性框图。如图1所示,消息处理系统1000可以包括设备100和服务器200,设备100和服务器200通信连接,可选地,设备100基于wi-fimesh无线网状网络和服务器200通信连接。需要说明的是,设备100和服务器200也可以通过其他方式,如zigbee、蓝牙等方式进行通信连接,从而实现设备100与服务器之间的数据交互。

示例性的,消息处理系统1000还包括客户端300。通过客户端300对设备100进行控制和管理。

设备100包括通信模块110和控制装置120,其中,通信模块110用于设备100与服务器200通信连接。

控制装置120包括处理器,处理器可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

服务器200可以一台独立的服务器,或者是服务器集群,或者是多台服务器按照一定逻辑组成系统。在实际应用中,该服务器200可以是iot(internetofthings,物联网)云服务器。

可以理解的,上述对于消息处理系统各部件的命名仅仅出于标识的目的,并不因此对本申请实施例进行限制。

以下将基于消息处理系统、所述消息处理系统中的设备和所述消息处理系统中的服务器对本申请的实施例提供的消息处理方法进行详细介绍。

请参阅图2,图2是本申请一实施例提供的一种消息处理方法的步骤示意流程图。该消息处理方法具体应用于上述实施例提供的服务器中,以实现提高消息的安全性。

如图2所示,该消息处理方法具体包括步骤s101至步骤s103。

s101、发送第一请求消息至消息队列,以供设备通过监听所述消息队列获取所述第一请求消息,对所述第一请求消息进行逻辑处理,获得对应的第一响应消息,并将所述第一响应消息发送至所述消息队列。

通常,在消息下行中,服务器下发请求消息的下发场景包括两种,一是服务器根据app发起的调用请求下发,二是服务器主动下发。不管是哪种下发场景下服务器将请求消息下发至消息队列,例如,服务器将请求消息下发至mqtt(messagequeuingtelemetrytransport,消息队列遥测传输)消息队列。为了便于区分描述,下文将服务器下发的请求消息称为第一请求消息。

在一些实施例中,服务器在接收到app发起的调用请求时,首先查询缓存中是否存在该调用请求对应的响应值。例如,若app发起查询设备属性的调用请求,缓存中保存了设备的相关属性信息,则服务器查询缓存中存在该调用请求对应的响应值。

当服务器查询缓存中存在对应的响应值时,服务器直接返回响应值至app。反之,当缓存中不存在对应的响应值时,服务器根据该调用请求,发送对应的第一请求消息至消息队列。

设备监听消息队列,获取服务器下发至消息队列的第一请求消息,并对第一请求消息进行逻辑处理,获得对应的第一响应消息,并将一响应消息发送至消息队列。

在一些实施例中,预设消息与处理逻辑关系路由表,具体过程如下:(1)建立消息的handler处理模板;(2)针对不同的请求/响应消息定义handler实现;(3)应用启动时加载所有handler;(4)建立请求/响应消息与handler关系路由表。

设备根据预设的消息与处理逻辑关系路由表,获取第一请求消息对应的消息处理逻辑,根据该消息处理逻辑对第一请求消息进行逻辑处理,获得对应的第一响应消息。

s102、监听所述消息队列,获取所述第一响应消息。

s103、若所述第一请求消息的下发场景为所述服务器根据客户端发起的调用请求下发,则将所述第一响应消息写入缓存中,以供所述客户端轮询所述缓存,获取所述第一响应消息。

服务器通过监听消息队列,获取到设备发送的第一响应消息,之后,服务器根据第一请求消息的下发场景,对第一响应消息进行相应处理操作。若第一请求消息的下发场景为服务器主动下发,则服务器记录第一响应消息,完成消息获取操作。

若第一请求消息的下发场景为服务器根据app发起的调用请求下发,则服务器获取到第一响应消息后,将第一响应消息写入缓存中,其中,该缓存可以包括但不限于公共缓存。app轮询缓存,获取到第一响应消息,也即获取到其发起的调用请求对应的响应结果。可选地,app通过发起调用请求的处理线程轮询缓存,获取到设备响应处理的第一响应消息,处理线程将第一响应消息同步返回app。

示例性的,预设缓存key格式,例如,设置key格式为:设备唯一id+消息id。app根据预设的缓存key格式,从缓存中获取设备响应处理的第一响应消息。

在一些实施例中,app发起调用请求后,轮询缓存,当前轮询的结果可能是获取到第一响应消息,也可能是未获取到第一响应消息。若当前轮询未获取到第一响应消息,则判断轮询时间是否达到预设时长,若还未达到预设时长,则继续轮询缓存,循环上述操作。若轮询时间已经达到预设时长,也即在预设时长内轮询未获取到第一响应消息,则发出超时提示信息。可选地,app通过发起调用请求的处理线程轮询缓存,若在预设时长内轮询未获取到第一响应消息,则处理线程返回超时提示信息至app。

下面,以app主动发起调用请求的消息下行为例,对消息处理过程进行介绍,例如,如图3所示,消息下行的流程如下:

(1)、app发起http调用请求;

(2)、服务器轮询公共缓存,判断调用是否命中缓存规则,也即公共缓存中是否保存该调用请求对应的响应值,若是,则返回缓存值;若否,则继续下面流程;

(3)、服务器下发method消息到mqtt消息队列;

(4)、设备从mqtt消息队列监听到method消息;

(5)、设备处理method消息,返回reply响应消息至mqtt消息队列;

(6)、服务器从mqtt消息队列监听到reply响应消息,将reply响应消息写入到公共缓存中;

(7)、app发起调用请求的处理线程通过轮询公共缓存,获取到设备异步响应的reply响应消息,同步返回给app。

对于消息上行,设备发送请求消息至消息队列,为了便于区分描述,下文将该请求消息称为第二请求消息。服务器通过监听消息队列,获取设备发送至消息队列的第二请求消息。在获取到该第二请求消息后,服务器根据第二请求消息对应的消息处理逻辑,对第二请求消息进行逻辑处理,获得对应的第二响应消息。可选地,服务器查询预设的消息与处理逻辑关系路由表,获取到第二请求消息对应的消息处理逻辑,根据该消息处理逻辑对第二请求消息进行逻辑处理,获得对应的第二响应消息。

在一些实施例中,服务器在获取到第二请求消息后,先对第二请求消息进行预处理,预处理包括解密处理和验签处理中至少一种。例如,设备为网关设备,网关设备对第二请求消息进行aes加密,则服务器在获取到加密的第二请求消息后,对加密的第二请求消息进行aes解密,获得原始的第二请求消息。

对第二请求消息进行预处理完成后,服务器再根据第二请求消息对应的消息处理逻辑,对预处理后的第二请求消息进行逻辑处理,获得对应的第二响应消息。

之后,服务器将第二响应消息发送至消息队列,设备监听消息队列,获取到第二响应消息。

例如,如图4所示,消息上行的流程如下:

(1)、设备发送method消息到mqtt消息队列中;

(2)、服务器从mqtt消息队列中监听到method消息;

(3)、服务器通过公共消息处理逻辑,对method消息进行解密和验签;

(4)、服务器执行method消息对应的处理逻辑,获取reply响应消息;

(5)、服务器封装reply响应消息,投递到mqtt消息队列中;

(6)、设备从mqtt消息队列中监听到reply响应消息。

请参阅图5,图5是本申请一实施例提供的一种消息处理方法的步骤示意流程图。该消息处理方法具体应用于设备中,以实现提高消息的安全性。

如图5所示,该消息处理方法具体包括步骤s201至步骤s202。

s201、监听消息队列,获取服务器发送至所述消息队列的第一请求消息。

通常,在消息下行中,服务器下发请求消息的下发场景包括两种,一是服务器根据app发起的调用请求下发,二是服务器主动下发。不管是哪种下发场景下服务器将请求消息下发至消息队列,例如,服务器将请求消息下发至mqtt(messagequeuingtelemetrytransport,消息队列遥测传输)消息队列。为了便于区分描述,下文将服务器下发的请求消息称为第一请求消息。设备监听消息队列,获取服务器下发至消息队列的第一请求消息。

s202、对所述第一请求消息进行逻辑处理,获得对应的第一响应消息,并将所述第一响应消息发送至所述消息队列,以供所述服务器监听所述消息队列,获取所述第一响应消息,若所述第一请求消息的下发场景为所述服务器根据客户端发起的调用请求下发,则将所述第一响应消息写入缓存中,所述客户端轮询所述缓存,获取所述第一响应消息。

在获取到服务器下发至消息队列的第一请求消息后,设备对第一请求消息进行逻辑处理,获得对应的第一响应消息,并将一响应消息发送至消息队列。

服务器通过监听消息队列,获取到设备发送的第一响应消息,之后,服务器根据第一请求消息的下发场景,对第一响应消息进行相应处理操作。若第一请求消息的下发场景为服务器主动下发,则服务器记录第一响应消息,完成消息获取操作。

若第一请求消息的下发场景为服务器根据app发起的调用请求下发,则服务器获取到第一响应消息后,将第一响应消息写入缓存中,其中,该缓存可以包括但不限于公共缓存。app轮询缓存,获取到第一响应消息,也即获取到其发起的调用请求对应的响应结果。可选地,app通过发起调用请求的处理线程轮询缓存,获取到设备响应处理的第一响应消息,处理线程将第一响应消息同步返回app。

在消息上行实施例中,设备发送请求消息至消息队列,为了便于区分描述,下文将该请求消息称为第二请求消息。服务器通过监听消息队列,获取设备发送至消息队列的第二请求消息。在获取到该第二请求消息后,服务器根据第二请求消息对应的消息处理逻辑,对第二请求消息进行逻辑处理,获得对应的第二响应消息。可选地,服务器查询预设的消息与处理逻辑关系路由表,获取到第二请求消息对应的消息处理逻辑,根据该消息处理逻辑对第二请求消息进行逻辑处理,获得对应的第二响应消息。

在一些实施例中,服务器在获取到第二请求消息后,先对第二请求消息进行预处理,预处理包括解密处理和验签处理中至少一种。例如,设备为网关设备,网关设备对第二请求消息进行aes加密,则服务器在获取到加密的第二请求消息后,对加密的第二请求消息进行aes解密,获得原始的第二请求消息。

对第二请求消息进行预处理完成后,服务器再根据第二请求消息对应的消息处理逻辑,对预处理后的第二请求消息进行逻辑处理,获得对应的第二响应消息。

之后,服务器将第二响应消息发送至消息队列,设备监听消息队列,获取到第二响应消息。进一步地,设备可以根据第二响应消息,进行相应处理操作。

上述实施例通过服务器根据客户端发起的调用请求下发第一请求消息至消息队列,设备通过监听消息队列获取第一请求消息,对第一请求消息进行逻辑处理,获得对应的第一响应消息,并将第一响应消息发送至消息队列;服务器监听消息队列,获取第一响应消息,将第一响应消息写入缓存中,客户端轮询缓存获取第一响应消息,由于第一响应消息并没有发送至消息队列,避免了被其他实例监听,从而提高了消息的安全性。

请参阅图6,图6是本申请一实施例提供的服务器的示意性框图。该服务器600包括处理器610和存储器620,处理器610和存储器620通过总线连接,该总线比如为i2c(inter-integratedcircuit)总线。

具体地,处理器610可以是微控制单元(micro-controllerunit,mcu)、中央处理单元(centralprocessingunit,cpu)或数字信号处理器(digitalsignalprocessor,dsp)等。

具体地,存储器620可以是flash芯片、只读存储器(rom,read-onlymemory)磁盘、光盘、u盘或移动硬盘等。

其中,所述处理器用于运行存储在存储器中的计算机程序,并在执行所述计算机程序时实现如下步骤:

发送第一请求消息至消息队列,以供设备通过监听所述消息队列获取所述第一请求消息,对所述第一请求消息进行逻辑处理,获得对应的第一响应消息,并将所述第一响应消息发送至所述消息队列;

监听所述消息队列,获取所述第一响应消息;

若所述第一请求消息的下发场景为所述服务器根据客户端发起的调用请求下发,则将所述第一响应消息写入缓存中,以供所述客户端轮询所述缓存,获取所述第一响应消息。

在一些实施例中,所述处理器在实现所述发送第一请求消息至消息队列之前,还实现:

在接收到所述客户端发起的调用请求时,查询缓存中是否存在所述调用请求对应的响应值;

若存在所述响应值,则返回所述响应值至所述客户端;

若不存在所述响应值,则执行所述发送第一请求消息至消息队列的步骤。

在一些实施例中,所述处理器在执行所述计算机程序时还实现:

监听所述消息队列,获取设备发送至所述消息队列的第二请求消息;

根据所述第二请求消息对应的消息处理逻辑,对所述第二请求消息进行逻辑处理,获得对应的第二响应消息,并将所述第二响应消息发送至所述消息队列,以供所述设备监听所述消息队列,获取所述第二响应消息。

在一些实施例中,所述处理器在实现所述根据所述第二请求消息对应的消息处理逻辑,对所述第二请求消息进行逻辑处理之前,还实现:

对所述第二请求消息进行预处理,所述预处理包括解密处理和验签处理中至少一种;

所述处理器在实现所述根据所述第二请求消息对应的消息处理逻辑,对所述第二请求消息进行逻辑处理,获得对应的第二响应消息时,具体实现:

根据所述第二请求消息对应的消息处理逻辑,对预处理后的所述第二请求消息进行逻辑处理,获得所述第二响应消息。

在一些实施例中,所述处理器在实现所述根据所述第二请求消息对应的消息处理逻辑,对所述第二请求消息进行逻辑处理之前,还实现:

查询预设的消息与处理逻辑关系路由表,获取所述第二请求消息对应的消息处理逻辑。

在一些实施例中,所述处理器在实现所述监听所述消息队列,获取所述第一响应消息之后,还实现:

若所述第一请求消息的下发场景为所述服务器主动下发,则记录所述第一响应消息。

请参阅图7,图7是本申请一实施例提供的设备的示意性框图。该设备700包括处理器710和存储器720,处理器710和存储器720通过总线连接,该总线比如为i2c(inter-integratedcircuit)总线。

具体地,处理器710可以是微控制单元(micro-controllerunit,mcu)、中央处理单元(centralprocessingunit,cpu)或数字信号处理器(digitalsignalprocessor,dsp)等。

具体地,存储器720可以是flash芯片、只读存储器(rom,read-onlymemory)磁盘、光盘、u盘或移动硬盘等。

其中,所述处理器用于运行存储在存储器中的计算机程序,并在执行所述计算机程序时实现如下步骤:

监听消息队列,获取服务器发送至所述消息队列的第一请求消息;

对所述第一请求消息进行逻辑处理,获得对应的第一响应消息,并将所述第一响应消息发送至所述消息队列,以供所述服务器监听所述消息队列,获取所述第一响应消息,若所述第一请求消息的下发场景为所述服务器根据客户端发起的调用请求下发,则将所述第一响应消息写入缓存中,所述客户端轮询所述缓存,获取所述第一响应消息。

在一些实施例中,所述处理器在执行所述计算机程序时还实现:

发送第二请求消息至所述消息队列,以供所述服务器通过监听所述消息队列获取所述第二请求消息,对所述第二请求消息进行逻辑处理,获得对应的第二响应消息,并将所述第二响应消息发送至所述消息队列;

监听所述消息队列,获取所述第二响应消息。

本申请的实施例还提供了一种消息处理系统,可例如为图1所示的消息处理系统,所述消息处理系统包括设备和服务器。需要说明的是,服务器可以为图6中示例的服务器,设备可以为图7中示例的设备。

消息处理系统中设备与服务器之间联动的具体操作可参见前面的实施例所述,在此不再赘述。

本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现上述实施例提供的消息处理方法的步骤。

其中,计算机可读存储介质可以是前述实施例的设备或服务器的内部存储单元,例如设备或服务器的硬盘或内存。计算机可读存储介质也可以是设备或服务器的外部存储设备,例如设备或服务器上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。

由于该计算机可读存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种消息处理方法,因此,可以实现本申请实施例所提供的任一种消息处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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