消息发布方法、通信装置及存储介质与流程
未命名
09-19
阅读:119
评论:0
1.本技术属于通信技术领域,尤其涉及一种消息发布方法、通信装置及存储介质。
背景技术:
2.目前采用订阅和发布机制的消息传输方案中,若本地节点需要向服务器传输消息,本地节点可以使用不同的主题将消息发送至消息发布节点(例如iot(internet of things,物联网)节点),由iot节点按主题向后台服务器推送消息,以实现消息的发布。由此,若订阅该主题,都可以接收到该主题对应的消息推送,从而实现本地节点、服务器、其他节点之间的消息传输。
3.例如,家庭储能系统中包括逆变器以及储能设备等,逆变器内又包括ems(energy management system,能量管理)模块,pcs(power conversion system,储能变流器)模块等,上述各个设备或模块均可以作为本地节点向iot节点发送消息,并由iot节点进行消息发布。而上述各个本地节点均具有相同的一个或多个功能,例如温度监测功能,当任一本地节点需要上报温度值时,通常会使用类似的主题,例如emstemperature、pcs temperature等,且有效数据量通常较小。如此,若任一本地节点每次需要上报消息,iot节点都需要向服务器推送消息,若同一功能对应的消息上传频次过多,主题字节将占用过多的流量和带宽,从而导致iot节点消息发布的效率低下。
技术实现要素:
4.本技术实施例提供了一种消息发布方法、通信装置及存储介质,以解决消息发布的效率低下的问题。
5.本技术实施例第一方面提供一种消息发布方法,应用于与服务器通信的第一节点,消息发布方法包括:接收任一第二节点发送的消息,其中,第一节点与多个第二节点通信连接;确定消息对应的目标主题;将消息存储至目标主题对应的链表中;其中,同一链表中的消息来自相同或不同的第二节点;当链表内存储的消息数量超过预设数量时,从链表内选取并合并预设数量的消息,得到待推送消息包;基于目标主题向服务器推送待推送消息包。
6.本技术实施例提供的消息发布方法中,接收任一第二节点发送的消息,确定消息对应的目标主题,并将消息存储至目标主题对应的链表中;当链表内存储的消息数量超过预设数量时,从链表内选取并合并预设数量的消息,得到待推送消息包;基于目标主题向服务器推送待推送消息包。本技术通过将不同第二节点的同类消息存储至对应目标主题的链表中,并在单次发布消息时,从链表内合并预设数量的消息,得到待推送消息包,使得待推送消息包一次携带多个消息,有效消息更多,能够节省消息发布时的流量与带宽,降低消息发布频次,从而提高消息发布的效率。
7.本技术实施例第二方面还提供一种消息发布装置,应用于与服务器通信的第一节点,消息发布装置包括:消息接收模块,用于接收任一第二节点发送的消息,其中,第一节点
与多个第二节点通信连接;主题确定模块,用于确定消息对应的目标主题;消息存储模块,用于将消息存储至目标主题对应的链表中;其中,同一链表中的消息来自相同或不同的第二节点;消息合并模块,用于当链表内存储的消息数量超过预设数量时,从链表内选取并合并预设数量的消息,得到待推送消息包;消息推送模块,用于基于目标主题向服务器推送待推送消息包。
8.本技术实施例第三方面还提供一种通信装置,通信装置包括处理器,处理器用于执行存储器中存储的计算机程序时实现上述消息发布方法。
9.本技术实施例第四方面还挺一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述消息发布方法。
附图说明
10.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
11.图1是本技术实施例提供的消息发布方法的应用场景图;
12.图2是本技术实施例提供的消息发布方法的流程图;
13.图3是本技术实施例提供的目标主题的确定流程图;
14.图4是本技术实施例提供的链表的确定流程图;
15.图5是本技术实施例提供的消息的合并流程图;
16.图6是本技术实施例提供的待推送消息包的确定流程图;
17.图7是本技术实施例提供的消息发布装置的结构示意图;
18.图8是本技术实施例提供的通信装置的结构示意图。
具体实施方式
19.为了能够更清楚地理解本技术的上述目的、特征和优点,下面结合附图和具体实施例对本技术进行详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
20.在下面的描述中阐述了很多具体细节以便于充分理解本技术,所描述的实施例是本技术一部分实施例,而不是全部的实施例。
21.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。
22.mqtt(message queuing telemetry transport,消息队列遥测传输)是一种基于订阅和发布机制的消息传输协议,用于实现节点间的通信。节点可以包括具备通信功能的设备或模块。例如,节点可以包括本地节点与其他节点,本地节点使用不同的主题将消息发布至服务器,之后由其他节点通过订阅该主题以接收服务器推送的消息。在本地节点向服务器传输消息时,可以将不同主题的消息发送至消息发布节点,例如iot(internet of things,物联网)节点,由iot节点按主题向服务器推送消息,以发布消息。
23.相关技术中,以家庭储能系统中包括逆变器以及储能设备为例,逆变器内又包括ems(energy management system,能量管理)模块,pcs(power conversion system,储能变流器)模块等,上述各个设备或模块均可以作为本地节点。假设上述各个本地节点均具有温度监测功能,在向iot节点上报温度值时,ems模块使用ems temperature主题,pcs模块使用pcs temperature主题。相应地,ems模块上报的温度消息可以为:ems temperature,25摄氏度,pcs模块上报的温度消息可以为:pcs temperature,26摄氏度。之后,由iot节点向服务器推送上述温度消息。如此,若同一功能对应的消息上传频次过多,ems temperature与pcs temperature这类主题topic的字节将占用过多的流量和带宽,从而导致iot节点消息发布的效率低下。
24.为解决上述问题,本技术实施例提供一种消息发布方法,能够节省消息发布时的流量与带宽,降低消息发布频次,从而提高消息发布的效率。
25.结合图1说明本技术实施例提供的消息发布方法的应用场景图。如图1所示,应用场景内包含第一节点、第二节点、第三节点与服务器,第一节点、第二节点、第三节点与服务器的数量可以根据实际需求设置,在此不做限制。图1中仅以第一节点与服务器的数量为1个,第二节点与第三节点的数量各为n个举例。其中,第一节点可以是预先设置的用于提供消息发布功能的模块或设备,例如,第一节点为iot节点;第二节点可以是提供消息的模块或设备;第三节点可以为订阅消息的模块或设备。服务器提供一种异步通信机制,用于接收第一节点发送的不同主题的消息,以及向第三节点发送订阅主题下的消息。
26.在一些实施例中,第一节点与多个第二节点通信连接,第一节点还与服务器通信连接,服务器与多个第三节点通信连接。第一节点用于接收多个第二节点发送的消息,并将消息按照主题进行处理后,得到待推送消息包;之后,第一节点还用于按主题向服务器发送待推送消息包,以发布消息。服务器与多个第三节点通信连接,服务器可用于向第三节点推送订阅主题对应的消息,从而实现第一节点、第二节点、第三节点、服务器之间的消息传输。
27.在一些实施例中,与服务器通信的多个第三节点还可以按主题向服务器推送消息,多个第二节点以及第一节点均可以订阅相关主题,服务器可以向第二节点及第一节点推送订阅主题对应的消息。当向第二节点推送订阅主题对应的消息时,可以先向第一节点推送消息,再由第一节点将消息对应发送给第二节点。
28.本技术实施例提供的消息发布方法的应用场景广泛,例如,移动直播、车联网、金融支付、智能餐饮、即时聊天、家庭储能等多种应用场景。以消息发布方法应用于家庭储能场景为例,家庭储能场景中包括逆变器、储能设备、智能空调以及智能冰箱,逆变器内又包括ems(energy management system,能量管理)模块,pcs(power conversion system,储能变流器)模块等,将上述ems模块、pcs模块与储能设备作为第二节点,智能空调与智能冰箱作为第三节点。在一些实施例中,由ems模块、pcs模块与储能设备向预先设置的第一节点发送温度、剩余电量与充电速度等消息,第一节点将上述消息按照主题进行一系列处理后,得到待推送消息包;之后,第一节点还用于按主题向服务器发送待推送消息包,以发布消息。智能空调与智能冰箱从服务器内订阅上述消息以确定家庭储能系统的状态和能量输出情况,从而规划各自的用电计划,以达到提高能源利用率、降低用电成本等效果。
29.图2是本技术实施例提供的消息发布方法的流程示意图,消息发布方法可应用于通信装置,具体地,消息分布方法应用于与服务器通信的第一节点。如图2所示,消息发布方
法可以包括如下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
30.s11,接收任一第二节点发送的消息,其中,第一节点与多个第二节点通信连接。
31.在一些实施例中,第二节点可以是提供消息的模块或设备,第二节点的数量可以为1个,也可以为多个,在此不做限制。以家庭储能系统为例,包括逆变器与储能设备,逆变器内又包括ems(energy management system,能量管理)模块,pcs(power conversion system,储能变流器)模块等,将上述ems模块、pcs模块与储能设备作为第二节点。每个第二节点具有一个或多个功能,例如,ems模块可以具备温度监测功能、心跳监测功能与能耗监测功能;pcs模块可以具备温度监测功能、心跳监测功能与频率调节功能;储能设备可以具备温度监测功能、心跳监测功能与电量监测功能。ems模块作为第二节点向第一节点发送的消息可以包括ems模块温度值、ems模块心跳值以及ems模块当前能耗值;pcs模块作为第二节点向第一节点发送的消息可以包括pcs模块温度值、pcs模块心跳值以及pcs模块频率调节值;储能设备作为第二节点向第一节点发送的消息可以包括储能设备温度值、储能设备心跳值以及储能设备剩余电量值。
32.s12,确定消息对应的目标主题。
33.在一些实施例中,主题可以是指消息对应的类别,类别的划分可以根据业务场景确定,例如,按照功能、数据类型、地域以及时间等进行划分。本技术实施例以按照功能确定主题为例,在家庭储能系统中,主题可以包括但不限于:温度主题、心跳主题、能耗主题、频率主题以及电量主题。多个第二节点发出的消息可能属于同一主题,也可能属于不同主题,在此不做限制。示例性地,承接上述实施例,ems模块发送的ems模块温度值、pcs模块发送的pcs模块温度值与储能设备发送的储能设备温度值属于同一主题(例如,温度主题),ems模块心跳值、pcs模块心跳值与储能设备心跳值属于同一主题(例如,心跳主题),ems模块当前能耗值属于能耗主题,pcs模块频率调节值属于频率主题,储能设备剩余电量值属于电量主题。
34.在一实施例中,可以对第二节点发送的消息添加消息标识,便于后续根据消息标识确定消息对应的目标主题。消息标识可以为数字标识、颜色标识或文字标识,在此不做限制。消息标识用于标识消息所属的功能。
35.s13,将消息存储至目标主题对应的链表中;其中,同一链表中的消息来自相同或不同的第二节点。
36.在一些实施例中,链表可以是第一节点内预先设置的用于存储消息的数组空间,对于每一主题,均存在对应的链表,用于存储该主题下的多个消息。由于同一主题内的消息可以来自于单个第二节点,也可以来自多个第二节点,因此,同一链表中的消息可以来自相同或不同的第二节点。
37.示例性地,在家庭储能系统中,对温度主题、心跳主题、能耗主题、频率主题以及电量主题分别构建对应的温度链表、心跳链表、能耗链表、频率链表以及电量链表。其中,温度链表内用于存储第二节点-ems模块、第二节点-pcs模块以及第二节点-储能设备发送的关于温度值的消息,心跳链表内用于存储第二节点-ems模块、第二节点-pcs模块以及第二节点-储能设备发送的关于心跳值的消息,能耗链表内用于存储第二节点-ems模块发送的关于能耗值的消息,频率链表内用于存储第二节点-pcs模块发送的关于频率值的消息,电量链表内用于存储第二节点-储能设备发送的关于电量值的消息。
38.s14,当链表内存储的消息数量超过预设数量时,从链表内选取并合并预设数量的消息,得到待推送消息包。
39.在一些实施例中,考虑通信的效率与成本,在第一节点向服务器单次发布消息时,可以从链表内选取预设数量的消息进行合并,得到待推送消息包,使得待推送消息包可以一次携带多个消息,确保包含更多的有效消息,且降低消息发布频次,从而提高通信的效率、降低通信成本。预设数量可根据实际需求设置,例如,预设数量可以为15条。当链表内存储的消息数量超过15条时,按先进先出的原则从链表内选取并合并15条消息,生成待推送消息包。当链表内存储的消息数量未超过15条时,可循环等待预设时长,若在预设时长后,若链表内的消息数量仍未超过15条,则从链表内取出并合并所有的消息,生成待推送消息包。其中,预设时长可以根据时效性要求设置,例如,预设时长可以为2秒。
40.s15,基于目标主题向服务器推送待推送消息包。
41.在一些实施例中,待推送消息包内携带对应的主题信息,根据主题信息向服务器推送待推送消息包。在服务器的预设存储空间内,设置各个主题对应的存储空间,每个存储空间内存储相应主题对应的待推送消息包。服务器内还存储各个第三节点的主题订阅信息,根据主题订阅信息向第三节点推送该主题下的消息。
42.本技术实施例提供的消息发布方法中,接收任一第二节点发送的消息,确定消息对应的目标主题,并将消息存储至目标主题对应的链表中;当链表内存储的消息数量超过预设数量时,从链表内选取并合并预设数量的消息,得到待推送消息包;基于目标主题向服务器推送待推送消息包。本技术通过将不同第二节点的同类消息存储至对应目标主题的链表中,并在单次发布消息时,从链表内合并预设数量的消息,得到待推送消息包,使得待推送消息包一次携带多个消息,有效消息更多,能够节省消息发布时的流量与带宽,降低消息发布频次,从而提高消息发布的效率。
43.图3是本技术实施例提供的目标主题的确定流程图,目标主题的确定流程可应用于通信装置。如图3所示,包括如下步骤:
44.s21,解析消息,得到消息标识。
45.在一些实施例中,在家庭储能系统中,以第二节点为ems模块为例,预先设置0x0编码对应ems模块,相应地,ems模块向第一节点发送ems模块温度值、ems模块心跳值以及ems模块当前能耗值,上述三类消息对应的消息标识分别为0x01、0x02与0x03,其中,消息标识0x01用于标识该消息为ems模块发出的ems模块温度值,消息标识0x02用于标识该消息为ems模块发出的ems模块心跳值,消息标识0x03用于标识该消息为ems模块发出的ems模块当前能耗值。
46.s22,遍历预先设置的消息标识与主题的第一映射关系,确定消息对应的目标主题。
47.在一些实施例中,预先构建消息标识与主题的第一映射关系。示例性地,消息标识0x01对应温度主题,0x02对应心跳主题,0x03对应能耗主题,通过遍历第一映射关系,能够得到消息对应的目标主题。在一实施例中,消息标识与主题间的第一映射关系可以为多对一的关系,也即多个消息标识对应一个主题。例如,预先设置0x1编码对应pcs模块,0x11消息标识用于表示pcs模块发出的pcs模块温度值,由此,0x11也对应温度主题。
48.本技术实施例通过建立消息标识与主题的对应关系,通过遍历该对应关系,能够
快速确定消息对应的目标主题,提高主题确定的效率,进一步提高消息发布的效率。
49.图4是本技术实施例提供的链表的确定流程图,链表的确定流程可应用于通信装置。
50.如图4所示,包括如下步骤:
51.s31,遍历预先设置的主题与链表的第二映射关系,确定目标主题对应的链表。
52.在一些实施例中,对于每一主题,均存在对应的链表,用于存储该主题下的多个消息。预先设置主题与链表的第二映射关系,能够确定目标主题对应的链表。
53.可以理解的是,每一链表可以对应一个存储空间,第二映射关系中还记录有链表的存储地址。当基于主题进行链表查询时,可以查询到目标主题对应的链表的存储地址,以便进行消息的存储。
54.s32,将消息存储至目标主题对应的链表中。
55.在一些实施例中,链表内包含多个链表节点,链表可支持增添、删除以及插入链表节点。每个链表节点可以包含数据域与指针域,其中,数据域内可存储消息的类型(type,本技术也称消息标识),指针域用于指向下一链表节点。
56.本技术实施例通过链表存储消息,链表可支持增添、删除以及插入链表节点,避免像数组一样预先分配固定大小的空间,能够提高消息存储的灵活性与可靠性,进而提高消息发布的准确性。
57.图5是本技术实施例提供的消息的合并流程图,消息的合并流程可应用于通信装置。
58.如图5所示,包括如下步骤:
59.s41,当链表内存储有消息时,开始计时。
60.在一些实施例中,若每次从链表内选取一条消息推送至服务器,会导致频繁调用推送接口,也会增加服务器收到消息的次数。当网络出现抖动或延迟时,可能会堆积很多消息。因此,考虑通信的效率与成本,在链表内存储有消息时,调用计时器进行计时。
61.s42,在预设时长后,若链表内的消息数量未超过预设数量,则从链表内取出并合并所有的消息,得到待推送消息包。
62.在一些实施例中,预设时长可以根据时效性要求确定,例如,预设时长可以为2秒。预设数量可根据网络负载能力确定,例如,预设数量可以为15条。当链表内存储的消息数量未超过15条时,可循环等待预设时长,在达到预设时长后,若链表内的消息数量仍未超过15条,则从链表内取出并合并所有的消息,得到待推送消息包。
63.本技术实施例通过在链表内存储有消息时,开始计时,之后在预设时长后,若链表内的消息数量未超过预设数量,则从链表内取出并合并所有的消息,得到待推送消息包。本技术实施例能够在通过预设时长保证时效性要求的基础上,使得待推送消息包一次携带多个消息,有效消息更多,且降低消息发布频次,从而提高通信的效率、降低通信成本。
64.在一些实施例中,第一节点为接收到的每一消息添加时间戳,时间戳用于表示第一节点接收到所述消息的时间。通过对消息添加时间戳,能够确定接收到消息的时间,继而根据消息的时效性要求确定消息推送至服务器的顺序,能够保证消息的时效性。
65.在一些实施例中,消息的时效性要求可以通过主题对应的实时性等级确定,当主题对应的实时性等级越高,消息的时效性要求越高。因此,步骤s32可以包括:
66.当目标主题对应的实时性等级为第一等级时,将消息存储至目标主题对应的链表中。
67.例如,可以设置第一等级与第二等级,第二等级高于第一等级。当目标主题对应的实时性等级为第一等级时,表明该目标主题下的消息的实时性要求不高,可以将消息存储至目标主题对应的链表中,在预设时长内,待链表中消息的数量超过预设数量阈值时,合并消息得到待推送消息包;
68.相应的,在确定消息对应的主题后,上述消息分布方法还可以包括:
69.当目标主题对应的实时性等级为第二等级时,根据消息生成待推送消息包,并基于目标主题向服务器推送待推送消息包。
70.当目标主题对应的实时性等级为第二等级时,表明该目标主题下的消息的实时性要求较高,可以优先根据消息生成待推送消息包,并基于目标主题向服务器推送待推送消息包。
71.本技术通过对主题设置实时性等级,能够对实时性等级高的消息及时推送至服务器,对实时性等级低的消息可以合并成待推送消息包推送至服务器,提高消息发布的准确性。
72.图6是本技术实施例提供的待推送消息包的确定流程图,待推送消息包的确定流程可应用于通信装置。如图6所示,包括如下步骤:
73.s51,将链表内预设数量的消息的格式调整为目标消息格式。
74.在一些实施例中,在从链表内取出并合并预设数量的消息,得到待推送消息包后,将消息的格式调整为便于服务器解析的目标消息格式。例如,对于本地节点而言,消息的初始消息格式为通常为是私有协议的数据,不具有通用性,而服务器使用的是java或其他语言。因此,若使用原始消息进行推送,每次使用新的协议都会增加开发成本。因此,在发送消息前对消息进行格式调整,目标消息格式可以为protobuff格式。protobuff格式的数据具有跨平台和跨语言的优点。
75.本技术实施例通过将链表内预设数量的消息的格式调整为便于服务器解析的目标消息格式,能够降低通信成本,提高通信的效率。
76.s52,将格式调整后的预设数量的消息合并为待推送消息包。
77.在一些实施例中,第一节点与服务器间建立通信协议,通信协议可以包括mqtt协议、stomp、gb-808、新能源国标等主流通信协议。本技术实施例以通信协议为mqtt协议为例,在第一节点与服务器的mqtt连接建立成功后,通过mqtt连接上传所有的待推送消息包,每个待推送消息包携带目标主题。在一实施例中,可以将第一节点上传待推送消息包的控制流程写入while循环内,其中,while循环是一种控制流程结构,它会重复执行一段代码块,直到满足指定的条件为止。通过将第一节点上传待推送消息包的控制流程写入while循环内,能够在第一节点得到待推送消息后,及时将待推送消息推送至服务器,进一步提高消息发布的效率。
78.请参阅图7,图7是本技术实施例提供的消息发布装置的结构示意图。在一些实施例中,消息发布装置20可以包括多个由计算机程序段所组成的功能模块。消息发布装置20中的各个程序段的计算机程序可以存储于通信装置的存储器中,并由至少一个处理器所执行,以执行(详见图2描述)消息发布的功能。
79.本实施例中,消息发布装置20根据其所执行的功能,可以被划分为多个功能模块。功能模块可以包括:消息接收模块201、主题确定模块202、消息存储模块203、消息合并模块204、消息推送模块205。本技术所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
80.消息接收模块201可以用于接收任一第二节点发送的消息,其中,第一节点与多个第二节点通信连接。
81.主题确定模块202可以用于确定消息对应的目标主题。
82.消息存储模块203可以用于将消息存储至目标主题对应的链表中;其中,同一链表中的消息来自相同或不同的第二节点。
83.消息合并模块204可以用于当链表内存储的消息数量超过预设数量时,从链表内选取并合并预设数量的消息,得到待推送消息包。
84.消息推送模块205可以用于基于目标主题向服务器推送待推送消息包。
85.可以理解,消息发布装置20与上述实施例的消息发布方法属于同一发明构思,消息发布装置20各模块的具体实现方式,与上述实施例中消息发布方法的各步骤对应,本技术在此不赘述。
86.以上所描述的模块划分,为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本技术各个实施例中的各功能模块可以集成在相同处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在相同单元中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
87.图8是本技术实施例提供的通信装置的结构示意图。如图8所示,通信装置30包括存储器31、至少一个处理器32、至少一条通信总线33以及收发器34,处理器32用于执行存储器31中存储的计算机程序时实现的消息发布方法。
88.本领域技术人员应该了解,图8示出的通信装置的结构并不构成本技术实施例的限定,既可以是总线型结构,也可以是星形结构,通信装置30还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
89.在一些实施例中,通信装置30是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。通信装置30还可连接客户设备,客户设备包括但不限于任何一种可与客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、数码相机等。
90.需要说明的是,通信装置30仅为举例,其他现有的或今后可能出现的电子产品如可适应于本技术,也应包含在本技术的保护范围以内,并以引用方式包含于此。
91.在一些实施例中,至少一条通信总线33被设置为实现存储器31以及至少一个处理器32等之间的连接通信。
92.尽管未示出,通信装置30还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与至少一个处理器32逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。通
信装置30还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。
93.在一些实施例中,存储器31中存储有计算机程序,计算机程序被至少一个处理器32执行时实现如的消息发布方法中的全部或者部分步骤。存储器31包括只读存储器(read-only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子擦除式可复写只读存储器(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
94.进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据通信装置30的使用所创建的数据等。
95.在一些实施例中,至少一个处理器32是通信装置30的控制核心(control unit),利用各种接口和线路连接整个通信装置30的各个部件,通过运行或执行存储在存储器31内的程序或者模块,以及调用存储在存储器31内的数据,以执行通信装置30的各种功能和处理数据。例如,至少一个处理器32执行存储器中存储的计算机程序时实现本技术实施例中的消息发布方法的全部或者部分步骤;或者实现消息发布装置的全部或者部分功能。至少一个处理器32可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。
96.上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台通信装置(可以是个人计算机,通信装置,或者网络设备等)或处理器(processor)执行本技术各个实施例方法的部分。
97.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
98.作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
99.另外,在本技术各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
100.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其他的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。说明书中陈述的多个单元或装置
也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
101.最后应说明的是,以上实施例仅用以说明本技术的技术方案而非限制,尽管参照较佳实施例对本技术进行了详细说明,本领域的普通技术人员应当理解,可以对本技术的技术方案进行修改或等同替换,而不脱离本技术技术方案的精神和范围。
技术特征:
1.一种消息发布方法,应用于与服务器通信的第一节点,其特征在于,所述消息发布方法包括:接收任一第二节点发送的消息,其中,所述第一节点与多个第二节点通信连接;确定所述消息对应的目标主题;将所述消息存储至所述目标主题对应的链表中;其中,同一链表中的消息来自相同或不同的第二节点;当所述链表内存储的消息数量超过预设数量时,从所述链表内选取并合并所述预设数量的消息,得到待推送消息包;基于所述目标主题向所述服务器推送所述待推送消息包。2.如权利要求1所述的消息发布方法,其特征在于,所述确定所述消息对应的目标主题,包括:解析所述消息,得到消息标识;遍历预先设置的消息标识与主题的第一映射关系,确定所述消息对应的目标主题。3.如权利要求1所述的消息发布方法,其特征在于,所述将所述消息存储至所述目标主题对应的链表中,包括:遍历预先设置的主题与链表的第二映射关系,确定所述目标主题对应的链表;将所述消息存储至所述目标主题对应的链表中。4.如权利要求1所述的消息发布方法,其特征在于,所述方法还包括:当所述链表内存储有消息时,开始计时;在预设时长后,若所述链表内的消息数量未超过预设数量,则从所述链表内取出并合并所有的所述消息,得到所述待推送消息包。5.如权利要求1所述的消息发布方法,其特征在于,所述方法还包括:为接收到的每一所述消息添加时间戳,所述时间戳用于表示所述第一节点接收到所述消息的时间。6.如权利要求5所述的消息发布方法,其特征在于,所述将所述消息存储至所述目标主题对应的链表中,包括:当所述目标主题对应的实时性等级为第一等级时,将所述消息存储至所述目标主题对应的链表中;相对应的,在所述确定所述消息对应的目标主题之后,所述方法还包括:当所述目标主题对应的实时性等级为第二等级时,根据所述消息生成所述待推送消息包,并基于所述目标主题向所述服务器推送所述待推送消息包;所述第二等级高于所述第一等级。7.如权利要求1中所述的消息发布方法,其特征在于,所述从所述链表内选取并合并所述预设数量的消息,得到待推送消息包,包括:将所述链表内所述预设数量的消息的格式调整为目标消息格式;将格式调整后的所述预设数量的消息合并为所述待推送消息包。8.如权利要求1所述的消息发布方法,其特征在于,基于所述目标主题向所述服务器推送所述待推送消息包,包括:在与服务器的mqtt连接建立成功后,通过所述mqtt连接上传所有的待推送消息包,每
个待推送消息包携带所述目标主题。9.一种通信装置,其特征在于,所述通信装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至8中任意一项所述的消息发布方法。10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任意一项所述的消息发布方法。
技术总结
本申请实施例提供一种消息发布方法、通信装置与存储介质,消息发布方法包括:接收任一第二节点发送的消息,其中,第一节点与多个第二节点通信连接;确定消息对应的目标主题;将消息存储至目标主题对应的链表中;其中,同一链表中的消息来自相同或不同的第二节点;当链表内存储的消息数量超过预设数量时,从链表内选取并合并预设数量的消息,得到待推送消息包;基于目标主题向服务器推送待推送消息包。上述方法能够提高消息发布的效率。上述方法能够提高消息发布的效率。上述方法能够提高消息发布的效率。
技术研发人员:赵密 陈熙 王雷
受保护的技术使用者:深圳市正浩创新科技股份有限公司
技术研发日:2023.07.12
技术公布日:2023/9/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种用于基坑深层土方开挖的装置的制作方法 下一篇:一种自动提取RNA装置的制作方法
