一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

网关消息的发送方法、装置、存储介质及电子装置与流程

2023-09-16 07:51:53 来源:中国专利 TAG:


1.本技术涉及智慧家庭技术领域,具体而言,涉及一种网关消息的发送方法、装置、存储介质及电子装置。


背景技术:

2.目前,针对例如30gu1,30gu2等linux网关上运行的边缘场景,往往采用集中式单主机的边缘场景业务架构,即集中式单网关结构。该网关是一种不带触屏的设备,可以自动或者手动控制场景的执行、负载(例如:灯光、窗帘)的开关等,在用户实际使用场景中,边缘场景顾名思义是一种可运行在边缘设备端的场景,为了提高边缘场景的响应速度,往往需要对边缘场景执行时产生的消息进行及时处理和发送。然而,这种单网关边缘场景,由于依赖管道方式进行通信,每一次消息都必须经过多层处理才能继续传输,导致消息传输耗时很大,消息的发送效率很低。
3.因此,相关技术中,存在如何提高网关消息的发送效率的技术问题。
4.针对相关技术中,如何提高网关消息的发送效率的技术问题,尚未提出有效的解决方案。


技术实现要素:

5.本技术实施例提供了一种网关消息的发送方法、装置、存储介质及电子装置,以至少解决相关技术中,如何提高网关消息的发送效率的技术问题。
6.根据本技术实施例的一个实施例,提供了一种网关消息的发送方法,包括:通过第一业务网关的第一事件总线交互组件接收第二业务网关的第二消息转发组件发送的第一获取请求;确定所述第一获取请求所指示的目标消息类型对应的网关消息;将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件。
7.在一个示例性实施例中,确定所述第一获取请求所指示的目标消息类型对应的网关消息,包括:确定出所述第一业务网关中除了所述第一事件总线交互组件之外的其他组件;通过所述第一事件总线交互组件接收所述其他组件发送的不同消息类型的网关消息;从所述不同消息类型的网关消息中确定出所述第一获取请求所指示的目标消息类型对应的网关消息。
8.在一个示例性实施例中,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一用户侧业务模块;在确定所述目标消息类型对应的网关消息表示与设备状态对应的第一网关消息的情况下,从所述第一用户侧业务模块中获取所述第一网关消息;将所述第一网关消息发送至所述第二消息转发组件。
9.在一个示例性实施例中,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领
域模型组件;在所述目标消息类型对应的网关消息表示与领域状态对应的第二网关消息的情况下,从所述第一领域模型组件中获取所述第二网关消息;将所述第二网关消息发送至所述第二消息转发组件;其中,所述与领域状态对应的第二网关消息是所述第一领域模型组件通过从所述第一事件总线交互组件获取的与设备状态对应的第一网关消息生成的。
10.在一个示例性实施例中,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一场景软件开发包组件;在确定所述目标消息类型对应的网关消息表示与场景状态对应的第三网关消息的情况下,从所述第一场景软件开发包组件中获取所述第三网关消息;将所述第三网关消息发送至所述第二消息转发组件。
11.在一个示例性实施例中,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一内存负载计算组件;在确定所述目标消息类型对应的网关消息表示与内存状态对应的第四网关消息的情况下,从所述第一内存负载计算组件中获取所述第四网关消息,其中,所述第一内存负载计算组件用于根据监测到的网关内存确定出所述第四网关消息;将所述第四网关消息发送至所述第二消息转发组件。
12.在一个示例性实施例中,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一场景软件开发包组件;在确定所述目标消息类型对应的网关消息表示与脚本状态对应的第五网关消息的情况下,从所述第一场景软件开发包组件中获取所述第五网关消息;将所述第五网关消息发送至所述第二消息转发组件。
13.在一个示例性实施例中,所述方法还包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件,以及与所述第一事件总线交互组件连接的第一场景软件开发包组件;接收所述第一领域模型组件发送的与领域状态对应的第二网关消息;响应于所述第一场景软件开发包组件发送的第二获取请求,将所述第二获取请求指示的所述第二网关消息发送给所述第一场景软件开发包组件。
14.在一个示例性实施例中,所述方法还包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件,以及,与所述第一事件总线交互组件连接的第一内存负载计算组件;接收到所述第一内存负载计算组件发送的与内存状态对应的第四网关消息;响应于所述第一领域模型组件发送的第三获取请求,将所述第三获取请求指示的所述第四网关消息发送给所述第一领域模型组件。
15.在一个示例性实施例中,所述方法还包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一主从数据库备份组件,以及,与所述第一事件总线交互组件连接的第一场景软件开发包组件;接收所述第一场景软件开发包组件发送的与脚本状态对应的第五网关消息;响应于所述第一主从数据库备份组件发送的第四获取请求,将所述第四获取请求指示的所述第五网关消息发送给所述第一主从数据库备份组件。
16.根据本技术实施例的另一方面,还提供了一种网关消息的发送装置,包括:接收模块,用于通过第一业务网关的第一事件总线交互组件接收第二业务网关的第二消息转发组件发送的第一获取请求;确定模块,用于确定所述第一获取请求所指示的目标消息类型对应的网关消息;转发模块,用于将所述目标消息类型对应的网关消息发送至所述第二消息
转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件。
17.根据本技术实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述网关消息的发送方法。
18.根据本技术实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的网关消息的发送方法。
19.在本技术实施例中,通过第一业务网关的第一事件总线交互组件接收第二业务网关的第二消息转发组件发送的第一获取请求;确定所述第一获取请求所指示的目标消息类型对应的网关消息;将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件;采用上述技术方案,解决了如何提高网关消息的发送效率的技术问题,进而提高了网关消息的发送效率。
附图说明
20.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
21.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
22.图1是本技术实施例的一种网关消息的发送方法的硬件环境示意图;
23.图2是根据本技术实施例的网关消息的发送系统的结构示意图;
24.图3是根据本技术实施例的网关消息的发送方法的流程图;
25.图4是根据本技术实施例的网关消息的发送方法的流程示意图(一);
26.图5是根据本技术实施例的网关消息的发送方法的流程示意图(二);
27.图6是根据本技术实施例的一种网关消息的发送装置的结构框图。
具体实施方式
28.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
29.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
30.根据本技术实施例的一个方面,提供了一种网关消息的发送方法。该网关消息的发送方法广泛应用于智慧家庭(smart home)、智能家居、智能家用设备生态、智慧住宅(intelligence house)生态等全屋智能数字化控制应用的边缘场景。可选地,在本实施例中,上述网关消息的发送方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
31.上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:wifi(wireless fidelity,无线保真),蓝牙。终端设备102可以并不限定于为pc、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
32.在一个实施例中,结合图2对上述网关消息的交互系统进行更好的说明,图2是根据本技术实施例的网关消息的交互系统的结构示意图。如图2所示,网关消息的交互系统包括a网关(相当于上述第一业务网关)和b网关(相当于上述第二业务网关),a网关和b网关的组成结构一致,且a网关和b网关各自对应具有用户业务通道。
33.以a网关为例,对网关消息的交互过程进行说明。cae将经由用户业务通道传输的消息发送给ucom组件,继而由ucom组件转发消息至网关消息过滤器(即上述第一网关消息过滤器),网关消息过滤器将通过筛选的消息发送至事件总线broker(相当于上述事件总线交互组件)。事件总线broker与场景jsdk(相当于上述第一场景软件开发包组件),领域模型(相当于上述第一领域模型组件),cpu负载统计模块(相当于上述第一内存负载计算组件),sdl用户侧(相当于上述第一用户侧业务模块),主从数据库备份模块,消息转发模块(相当于上述第一消息转发组件)中的每一模块之间均存在消息交互过程。事件总线broker响应于网关消息过滤器,场景jsdk,领域模型,cpu负载统计模块,sdl用户侧,主从数据库备份模块,消息转发模块中任一订阅侧的订阅请求,将订阅请求指示的网关消息发布至任一订阅侧。
34.其中,在图2中,sdl(smart device linux sdk)表示:基于linux平台的设备使用的一种物联软件开发包。
35.cae(computer-aided engineering,即计算机辅助工程)用于借助计算机技术和软件工具对物理现象进行模拟、分析和优化,从而帮助设计人员提高产品的性能和可靠性,减少产品开发周期和成本,实现智能化、数字化生产。在网关系统中,cae还可以用于网络连接的建模与仿真分析等方面。
36.ucom组件是指com(component object model)技术下的通用类型库,其中包括了
一些基本接口和结构体定义。这些接口和结构体可以使开发人员在不同的开发环境中共享代码,从而实现更高效、可靠的软件开发。ucom组件常被使用在微软.net平台上,通过它们可以方便地调用非托管代码或com组件,并且与基于.net平台编写的对象进行交互。
37.事件总线broker是一种消息传递框架中的组件,用于在应用程序或系统不同部分之间传递消息。它通过将发布者和订阅者解耦以及实现异步通信来简化应用程序开发。在事件总线系统中,事件总线broker充当了一个中心节点角色,作为所有发布和接收消息信息的交互点。broker可以确保发送到正确目标同时向连接器提供数据控制,并对事件进行缓冲处理等操作。基于此简化了应用程序集成、处理任务的日志记录和跟踪问题等方面很有帮助。
38.场景jsdk(java software development kit)是一种软件开发工具包,用于在java环境下创建和管理人工智能场景模型。它提供了丰富的api和工具,使开发人员能够轻松地创建、训练、测试以及部署自己的机器学习模型。该sdk可以与各种第三方框架和库(如tensorflow、keras等)配合使用,并支持本地或云端执行。通过使用场景jsdk,开发人员可以快速构建面向企业或个人用户的高质量ai应用程序。
39.在本实施例中提供了一种网关消息的发送方法,应用于上述终端设备,图3是根据本技术实施例的网关消息的发送方法的流程图,该流程包括如下步骤:
40.步骤s302,通过第一业务网关的第一事件总线交互组件接收第二业务网关的第二消息转发组件发送的第一获取请求;
41.步骤s304,确定所述第一获取请求所指示的目标消息类型对应的网关消息;
42.其中,需要说明的是,上述目标消息类型至少包括以下之一:与设备状态对应的第一网关消息,与领域状态对应的第二网关消息,与场景状态对应的第三网关消息,与内存状态对应的第四网关消息,与脚本状态对应的第五网关消息。
43.举例来说,与设备状态对应的第一网关消息可以表示为“/user/gatewayid/data”主题消息,包括设备上线下线/绑定/解绑/订阅/解订阅/属性/告警/事件控制等原有基础消息。
44.与领域状态对应的第二网关消息可以表示为“/user/gatewayid/dm_data”主题消息,包括影子设备初始化消息,属性/告警消息通知,批控命令消息,领域模型打点消息,领域模型白名单消息。
45.与场景状态对应的第三网关消息可以表示为“/user/gatewayid/scene_data”主题消息,包括场景批控命令订阅等消息,例如sdl设备侧消息,sdl用户侧消息,场景打点消息。
46.与内存状态对应的第四网关消息可以表示为“/user/gatewayid/cpuload_data”主题消息,包括网关设备cpu负载情况和局域网网关的ip信息等。
47.与脚本状态对应的第五网关消息可以表示为“/user/gatewayid/base data”主题消息,包括场景脚本信息,上层接口传入入参信息,备份数据等。
48.步骤s306,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件。
49.通过上述步骤,通过第一业务网关的第一事件总线交互组件接收第二业务网关的
第二消息转发组件发送的第一获取请求;确定所述第一获取请求所指示的目标消息类型对应的网关消息;将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件,解决了相关技术中,如何提高网关消息的发送效率的技术问题,进而提高了网关消息的发送效率。
50.在一个示例性实施例中,为了对上述步骤s304中确定所述第一获取请求所指示的目标消息类型对应的网关消息的实现过程进行进一步说明,提出以下实现步骤:步骤s11,确定出所述第一业务网关中除了所述第一事件总线交互组件之外的其他组件;步骤s12,通过所述第一事件总线交互组件接收所述其他组件发送的不同消息类型的网关消息;步骤s13,从所述不同消息类型的网关消息中确定出所述第一获取请求所指示的目标消息类型对应的网关消息。
51.在一个示例性实施例中,进一步的,可以通过如下技术方案将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,包括:方案1,其中,方案1的实现步骤包括:步骤s21,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一用户侧业务模块;步骤s22,在确定所述目标消息类型对应的网关消息表示与设备状态对应的第一网关消息的情况下,从所述第一用户侧业务模块中获取所述第一网关消息;步骤s23,将所述第一网关消息发送至所述第二消息转发组件。
52.方案2,实现步骤包括:步骤s31,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件;步骤s32,在所述目标消息类型对应的网关消息表示与领域状态对应的第二网关消息的情况下,从所述第一领域模型组件中获取所述第二网关消息;步骤s33,将所述第二网关消息发送至所述第二消息转发组件;其中,所述与领域状态对应的第二网关消息是所述第一领域模型组件通过从所述第一事件总线交互组件获取的与设备状态对应的第一网关消息生成的。
53.可选的,在接收到所述第一领域模型组件发送的与领域状态对应的第三网关消息之前,还可以响应所述第一领域模型组件发送的获取请求;在所述目标消息类型对应的网关消息包括与设备状态对应的第一网关消息的情况下,将所述获取请求指示的与设备状态对应的第一网关消息发送给所述第一领域模型组件。
54.或者,响应于所述第一领域模型组件发送的获取请求;在所述目标消息类型对应的网关消息包括与场景状态对应的第三网关消息的情况下,将所述获取请求指示的与场景状态对应的第三网关消息发送给所述第一领域模型组件。
55.可选的,还可以通过第一事件总线交互组件响应于其他组件发送的第一获取请求,将所述第一获取请求指示的目标消息类型对应的网关消息发送给所述其他组件,具体过程包括如下步骤:从所述其他组件中确定出第一场景软件开发包组件和第一领域模型组件;接收到所述第一场景软件开发包组件发送的与场景状态对应的第三网关消息,以及响应所述第一领域模型组件发送的获取请求;在所述目标消息类型对应的网关消息包括与场景状态对应的第三网关消息的情况下,将所述获取请求指示的与场景状态对应的第三网关消息发送给所述第一领域模型组件。
56.方案3,实现步骤包括:步骤s41,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一场景软件开发包组件;步骤s42,在确定所述目标消息类型对应的网关消
息表示与场景状态对应的第三网关消息的情况下,从所述第一场景软件开发包组件中获取所述第三网关消息;步骤s43,将所述第三网关消息发送至所述第二消息转发组件。
57.方案4,实现步骤包括:步骤s51,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一内存负载计算组件;步骤s52,在确定所述目标消息类型对应的网关消息表示与内存状态对应的第四网关消息的情况下,从所述第一内存负载计算组件中获取所述第四网关消息,其中,所述第一内存负载计算组件用于根据监测到的网关内存确定出所述第四网关消息;步骤s53,将所述第四网关消息发送至所述第二消息转发组件。
58.在一个可选的实施例中,还可以从所述其他组件中确定出第一内存负载计算组件和第一领域模型组件,接收到所述第一内存负载计算组件发送的与内存状态对应的第四网关消息;以及响应所述第一领域模型组件发送的获取请求,在所述目标消息类型对应的网关消息包括与内存状态对应的第四网关消息的情况下,将所述获取请求指示的与内存状态对应的第四网关消息发送给所述第一领域模型组件。
59.方案5,实现步骤包括:步骤s61,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一场景软件开发包组件;步骤s62,在确定所述目标消息类型对应的网关消息表示与脚本状态对应的第五网关消息的情况下,从所述第一场景软件开发包组件中获取所述第五网关消息;步骤s63,将所述第五网关消息发送至所述第二消息转发组件。
60.在一个可选的实施例中,从所述其他组件中确定出第一内存负载计算组件和第一场景软件开发包组件,接收到所述第一内存负载计算组件发送的与内存状态对应的第四网关消息;以及响应所述第一场景软件开发包组件发送的获取请求,在所述目标消息类型对应的网关消息包括与内存状态对应的第四网关消息的情况下,将所述获取请求指示的与内存状态对应的第四网关消息发送给所述第一场景软件开发包组件。
61.或者,在其他的实施例中,从所述其他组件中确定出第一主从数据库备份组件,以及响应所述第一主从数据库备份组件发送的获取请求;在所述目标消息类型对应的网关消息包括与脚本状态对应的第五网关消息的情况下,将所述获取请求指示的与脚本状态对应的第五网关消息发送给所述第一主从数据库备份组件。
62.在一个示例性实施例中,进一步的,还可以实现其他技术方案,具体步骤包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件,以及与所述第一事件总线交互组件连接的第一场景软件开发包组件;接收所述第一领域模型组件发送的与领域状态对应的第二网关消息;响应于所述第一场景软件开发包组件发送的第二获取请求,将所述第二获取请求指示的所述第二网关消息发送给所述第一场景软件开发包组件。
63.在一个示例性实施例中,进一步的,还可以从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件,以及,与所述第一事件总线交互组件连接的第一内存负载计算组件;接收到所述第一内存负载计算组件发送的与内存状态对应的第四网关消息;响应于所述第一领域模型组件发送的第三获取请求,将所述第三获取请求指示的所述第四网关消息发送给所述第一领域模型组件。
64.在一个示例性实施例中,进一步提出以下技术方案,具体步骤包括:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一主从数据库备份组件,以及,与所述第一事件总线交互组件连接的第一场景软件开发包组件;接收所述第一场景软件开发包组
件发送的与脚本状态对应的第五网关消息;响应于所述第一主从数据库备份组件发送的第四获取请求,将所述第四获取请求指示的所述第五网关消息发送给所述第一主从数据库备份组件。
65.可选的,还可以从所述其他组件中确定出与所述第一事件总线交互组件连接的第一场景软件开发包组件,以及,与所述第一事件总线交互组件连接的第一内存负载计算组件;接收到所述第一内存负载计算组件发送的与内存状态对应的第四网关消息;响应于所述第一场景软件开发包组件发送的获取请求,将所述获取请求指示的所述第四网关消息发送给所述第一场景软件开发包组件。
66.为了更好的理解上述网关消息的发送方法的过程,以下再结合可选实施例对上述网关消息的发送的实现方法流程进行说明,但不用于限定本技术实施例的技术方案。
67.在本实施例中提供了一种网关消息的发送方法,图4是根据本技术实施例的网关消息的发送方法的流程示意图(一),如图4所示,具体如下步骤:
68.步骤s401:a网关的网关消息过滤器从cae大小循环收到json消息,过滤后得到/user/gatewayid/basedata主题消息,并将/user/gatewayid/basedata主题消息发送给a网关的事件软总线broker(即事件总线broker);
69.步骤s402:a网关的领域模型向a网关的事件软总线broker发送用于订阅/user/gatewayid/data主题消息的订阅请求;
70.步骤s403:a网关的事件软总线broker响应于步骤s402中的订阅请求,向a网关的领域模型推送/user/gatewayid/data主题消息;
71.步骤s404:a网关的事件软总线broker向a网关的sdl用户侧发送用于订阅/user/gatewayid/data主题消息的订阅请求;
72.步骤s405:a网关的cpu负载统计模块向a网关的事件软总线broker发布/user/gatewayid/cpuload主题消息;
73.步骤s406:a网关的sdl用户侧将/user/gatewayid/data主题消息推送给a网关的事件软总线broker;
74.步骤s407:a网关的领域模型向a网关的事件软总线broker发布/user/gatewayid/dm_data主题消息;
75.步骤s408:a网关的场景jsdk向a网关的事件软总线broker发布/user/gatewayid/scene_data主题消息;
76.步骤s409:a网关的领域模型向a网关的事件软总线broker发送用于订阅/user/gatewayid/scene_data主题消息的订阅请求;
77.步骤s410:a网关的事件软总线broker向a网关的领域模型推送/user/gatewayid/scene_data主题消息;
78.步骤s411:a网关的场景jsdk向a网关的事件软总线broker发送用于订阅/user/gatewayid/dm_data主题消息的订阅请求;
79.步骤s412:a网关的事件软总线broker向a网关的场景jsdk推送/user/gatewayid/dm_data主题消息;
80.步骤s413:a网关的场景jsdk向a网关的事件软总线broker发布/user/gatewayid/base_data主题消息;
81.步骤s414:a网关的主从数据库备份模块向a网关的事件软总线broker发送用于订阅/user/gatewayid/basedata主题消息的订阅请求;
82.步骤s415:a网关的事件软总线broker向a网关的主从数据库备份模块推送/user/gatewayid/basedata主题消息;
83.步骤s416:a网关的消息转发模块向a网关的事件软总线broker发送用于订阅/user/gatewayid/basedata主题消息的订阅请求;
84.步骤s417:a网关的事件软总线broker向a网关的消息转发模块推送/user/gatewayid/basedata主题消息;
85.步骤s418:a网关的消息转发模块向a网关的事件软总线broker发送用于订阅/user/gatewayid/scene_data主题消息的订阅请求;
86.步骤s419:a网关的事件软总线broker向a网关的消息转发模块推送/user/gatewayid/scene_data主题消息;
87.步骤s420:a网关的消息转发模块向a网关的事件软总线broker发送用于订阅/user/gatewayid/dm_data主题消息的订阅请求;
88.步骤s421:a网关的事件软总线broker向a网关的消息转发模块推送/user/gatewayid/dm_data主题消息;
89.其中,需要说明的是,步骤s401至步骤s421中的交互过程均属于a网关内部的消息交互过程。
90.步骤s422:a网关的消息转发模块向b网关的事件软总线broker发送用于订阅/user/gatewayid/basedata主题消息的订阅请求;
91.步骤s423:b网关的事件软总线broker向a网关的消息转发模块推送/user/gatewayid/basedata主题消息;
92.步骤s424:a网关的消息转发模块向a网关的事件软总线broker发布/user/gatewayid/basedata主题消息;
93.步骤s425:a网关的消息转发模块向b网关的事件软总线broker发送用于订阅/user/gatewayid/dm_data主题消息的订阅请求;
94.步骤s426:b网关的事件软总线broker向a网关的消息转发模块推送/user/gatewayid/dm_data主题消息;
95.步骤s427:a网关的消息转发模块向a网关的事件软总线broker发布/user/gatewayid/dm_data主题消息;
96.步骤s428:a网关的消息转发模块向b网关的事件软总线broker发送用于订阅/user/gatewayid/scene_data主题消息的订阅请求;
97.步骤s429:b网关的事件软总线broker向a网关的消息转发模块推送/user/gatewayid/scene_data主题消息;
98.步骤s430:a网关的消息转发模块向a网关的事件软总线broker发布/user/gatewayid/scenedata主题消息;
99.步骤s431:a网关的消息转发模块向b网关的事件软总线broker发送用于订阅/user/gatewayid/cpuload主题消息的订阅请求;
100.步骤s432:b网关的事件软总线broker向a网关的消息转发模块推送/user/
gatewayid/cpuload主题消息;
101.步骤s433:a网关的消息转发模块向a网关的事件软总线broker发布/user/gatewayid/cpuload主题消息;
102.步骤s434:a网关的领域模型向a网关的的事件软总线broker发送用于订阅/user/gatewayid/cpuload主题消息的订阅请求;
103.步骤s435:a网关的事件软总线broker向a网关的领域模型推送/user/gatewayid/cpuload主题消息;
104.步骤s436:a网关的场景jsdk向a网关的事件软总线broker发送用于订阅/user/gatewayid/cpuload主题消息的订阅请求;
105.步骤s437:a网关的事件软总线broker向a网关的场景jsdk推送/user/gatewayid/cpuload主题消息。
106.通过上述步骤,通过步骤s401至步骤s421对单一网关内部的消息交互过程进行说明,以及通过步骤s422至步骤s437对不同网关的消息交互过程进行说明,提供了一种网关消息的发送的实现过程。
107.在一个实施例中,进一步结合图5对不同网关之间的消息交互过程进行说明,图5是根据本技术实施例的网关消息的发送方法的流程示意图(二),如图5所示,具体如下步骤:
108.步骤s501:a网关的场景jsdk向a网关的事件软总线broker发布/user/gatewayid/scene_data主题消息;
109.步骤s502:a网关的网关消息转发器向b网关的事件软总线broker发送用于订阅/user/gatewayid/scene_data主题消息的订阅请求;
110.步骤s503:b网关的场景jsdk向b网关的事件软总线broker发送用于订阅/user/gatewayid/scene_data主题消息的订阅请求;
111.步骤s504:a网关的网关消息转发器向a网关的事件软总线broker发送用于订阅/user/gatewayid/scene_data主题消息的订阅请求;
112.步骤s505:a网关的事件软总线broker向a网关的网关消息转发器推送/user/gatewayid/scene_data主题消息device_jsdk_scene_notify;
113.步骤s506:a网关的网关消息转发器向b网关的事件软总线broker推送/user/gatewayid/scene_data主题消息device_jsdk_scene_notify;
114.步骤s507:b网关的事件软总线broker向b网关的场景jsdk推送/user/gatewayid/scene_data主题消息device_jsdk_scene_notify;
115.步骤s508:b网关的场景jsdk向b网关的事件软总线broker推送/user/gatewayid/scene_data主题消息;
116.步骤s509:a网关的领域模型模块向a网关的事件软总线broker发送用于订阅/user/gatewayid/scene_data主题消息的订阅请求;
117.步骤s510:b网关的事件软总线broker向a网关的网关消息转发器推送/user/gatewayid/scene_data主题消息;
118.步骤s511:a网关的网关消息转发器向a网关的事件软总线broker推送/user/gatewayid/scene_data主题消息;
119.步骤s512:a网关的事件软总线broker向a网关的场景jsdk推送/user/gatewayid/scene_data主题消息device_jsdk_scene_resp;
120.步骤s513:a网关的场景jsdk向a网关的事件软总线broker推送/user/gatewayid/scene_data主题消息;
121.步骤s514:a网关的事件软总线broker向a网关的领域模型模块推送/user/gatewayid/scene_data主题消息。
122.在上述实施例中,以a网关和b网关为例,对多个网关的网关消息的交互过程进行说明,通过在每一网关内部增加事件总线broker,对于任一组件,可以直接基于事件总线broker与其他组件进行消息交互,实现不同组件的业务处理和消息传输过程的解耦,解决了由于其他组件处理业务导致的消息传输耗时较久的问题。
123.可选的,对于任一网关包含的消息转发模块(即网关消息转发器),均可以基于mqtt客户端与事件软总线broker建立联系,并向局域网内所有连接与mqtt设备服务器相连接的网关发送订阅请求。例如,a网关的消息转发模块可以向b网关的事件软总线broker发送用于订阅不同主题消息的订阅请求,反之亦然。
124.或者,在确定局域网内网关列表发生变化(包括网关ip的改变和网关数量变更的变化)时,向事件软总线broker发送/user/gatewayid/gatewayinfo主题消息,消息转发模块可以向事件软总线broker发送用于订阅/user/gatewayid/gatewayinfo主题消息的订阅请求,从而实现订阅设备列表中的网关ip,其中,/user/gatewayid/gatewayinfo主题消息包含局域网内设备id信息,以json格式表示为:
125.{"device_gateway_info":{"gatewayidmsglist":[{"deviceid":"f0b0402cb1e","ip":"192.168.1.xxx"]}}。
[0126]
可选的,网关消息过滤器可以将无关网关消息过滤掉,并将符合期望条件的网关消息转发至事件软总线broker,例如,每个json格式的网关消息都对应有一个事先约定好的消息名称,可以使用键值对匹配消息名称的方式来实现消息过滤的过程,可以更好的适配于具有较低配置性能的网关。
[0127]
基于上述实施例,可以解决网关因掉电等原因损坏数据无法进行场景联动的情况,并且采用事件总线机制所实现的事件总线broker与其他模块的发布订阅过程,可以将消息和业务完全解耦,减少了消息阻塞的概率,进而减少了各个模块之间多层消息交互导致的耗时问题。并且,还可以监控各个网关的cpu负载将业务分摊到对端的网关服务器上加工。
[0128]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例的方法。
[0129]
图6是根据本技术实施例的一种网关消息的发送装置的结构框图;如图6所示,包括:
[0130]
接收模块62,用于通过第一业务网关的第一事件总线交互组件接收第二业务网关
的第二消息转发组件发送的第一获取请求;
[0131]
确定模块64,用于确定所述第一获取请求所指示的目标消息类型对应的网关消息;
[0132]
转发模块66,用于将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件。
[0133]
通过上述装置,通过第一业务网关的第一事件总线交互组件接收第二业务网关的第二消息转发组件发送的第一获取请求;确定所述第一获取请求所指示的目标消息类型对应的网关消息;将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件,解决了相关技术中,如何提高网关消息的发送效率的技术问题,进而提高了网关消息的发送效率。
[0134]
在一个示例性实施例中,上述确定模块64包括确定单元,用于执行以下步骤:步骤s11,确定出所述第一业务网关中除了所述第一事件总线交互组件之外的其他组件;步骤s12,通过所述第一事件总线交互组件接收所述其他组件发送的不同消息类型的网关消息;步骤s13,从所述不同消息类型的网关消息中确定出所述第一获取请求所指示的目标消息类型对应的网关消息。
[0135]
在一个示例性实施例中,进一步的,上述转发模块66包括第一发送单元,用于执行以下步骤:步骤s21,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一用户侧业务模块;步骤s22,在确定所述目标消息类型对应的网关消息表示与设备状态对应的第一网关消息的情况下,从所述第一用户侧业务模块中获取所述第一网关消息;步骤s23,将所述第一网关消息发送至所述第二消息转发组件。
[0136]
在一个示例性实施例中,进一步的,上述转发模块66包括第二发送单元,用于执行以下步骤:步骤s31,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件;步骤s32,在所述目标消息类型对应的网关消息表示与领域状态对应的第二网关消息的情况下,从所述第一领域模型组件中获取所述第二网关消息;步骤s33,将所述第二网关消息发送至所述第二消息转发组件;其中,所述与领域状态对应的第二网关消息是所述第一领域模型组件通过从所述第一事件总线交互组件获取的与设备状态对应的第一网关消息生成的。
[0137]
在一个示例性实施例中,进一步的,上述转发模块66包括第三发送单元,用于执行以下步骤:步骤s41,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一场景软件开发包组件;步骤s42,在确定所述目标消息类型对应的网关消息表示与场景状态对应的第三网关消息的情况下,从所述第一场景软件开发包组件中获取所述第三网关消息;步骤s43,将所述第三网关消息发送至所述第二消息转发组件。
[0138]
在一个示例性实施例中,进一步的,上述转发模块66包括第四发送单元,用于执行以下步骤:步骤s51,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一内存负载计算组件;步骤s52,在确定所述目标消息类型对应的网关消息表示与内存状态对应的第四网关消息的情况下,从所述第一内存负载计算组件中获取所述第四网关消息,其中,所述第一内存负载计算组件用于根据监测到的网关内存确定出所述第四网关消息;步骤
s53,将所述第四网关消息发送至所述第二消息转发组件。
[0139]
在一个示例性实施例中,进一步的,上述转发模块66包括第五发送单元,用于执行以下步骤:步骤s61,从所述其他组件中确定出与所述第一事件总线交互组件连接的第一场景软件开发包组件;步骤s62,在确定所述目标消息类型对应的网关消息表示与脚本状态对应的第五网关消息的情况下,从所述第一场景软件开发包组件中获取所述第五网关消息;步骤s63,将所述第五网关消息发送至所述第二消息转发组件。
[0140]
在一个示例性实施例中,进一步的,上述网关消息的发送装置还包括第一发送模块,用于:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件,以及与所述第一事件总线交互组件连接的第一场景软件开发包组件;接收所述第一领域模型组件发送的与领域状态对应的第二网关消息;响应于所述第一场景软件开发包组件发送的第二获取请求,将所述第二获取请求指示的所述第二网关消息发送给所述第一场景软件开发包组件。
[0141]
在一个示例性实施例中,进一步的,上述网关消息的发送装置还包括第二发送模块,用于:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一领域模型组件,以及,与所述第一事件总线交互组件连接的第一内存负载计算组件;接收到所述第一内存负载计算组件发送的与内存状态对应的第四网关消息;响应于所述第一领域模型组件发送的第三获取请求,将所述第三获取请求指示的所述第四网关消息发送给所述第一领域模型组件。
[0142]
在一个示例性实施例中,上述网关消息的发送装置还包括第三发送模块,用于:从所述其他组件中确定出与所述第一事件总线交互组件连接的第一主从数据库备份组件,以及,与所述第一事件总线交互组件连接的第一场景软件开发包组件;接收所述第一场景软件开发包组件发送的与脚本状态对应的第五网关消息;响应于所述第一主从数据库备份组件发送的第四获取请求,将所述第四获取请求指示的所述第五网关消息发送给所述第一主从数据库备份组件。
[0143]
本技术的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
[0144]
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
[0145]
s1,通过第一业务网关的第一事件总线交互组件接收第二业务网关的第二消息转发组件发送的第一获取请求;
[0146]
s2,确定所述第一获取请求所指示的目标消息类型对应的网关消息;
[0147]
s3,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件。
[0148]
本技术的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0149]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0150]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0151]
s1,通过第一业务网关的第一事件总线交互组件接收第二业务网关的第二消息转发组件发送的第一获取请求;
[0152]
s2,确定所述第一获取请求所指示的目标消息类型对应的网关消息;
[0153]
s3,将所述目标消息类型对应的网关消息发送至所述第二消息转发组件,以指示所述第二消息转发组件将所述目标消息类型对应的网关消息转发至所述第二业务网关的第二事件总线交互组件。
[0154]
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0155]
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0156]
显然,本领域的技术人员应该明白,上述的本技术的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术不限制于任何特定的硬件和软件结合。
[0157]
以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表