一种消息的处理方法、装置、终端及存储介质与流程

文档序号:29091079发布日期:2022-03-02 02:49阅读:106来源:国知局
一种消息的处理方法、装置、终端及存储介质与流程

1.本发明涉及消息控制技术领域,具体涉及一种消息的处理方法、装置、终端及存储介质。


背景技术:

2.目前大部分iot(internet of things,物联网)设备本身硬件能力有限,只支持单指令串行执行,对于短时间出现大量并发控制指令的情况会出现控制指令丢失的现象,因此iot平台一般都会针对这种情况先将控制指令放入平台的一个队列中间件中做下缓冲,然后再从队列中间件中获取控制指令发给iot设备。
3.引入了队列中间件,虽说可以解决iot设备终端本身的阻塞问题,但是通常由于网络以及iot设备自身处理能力的问题,还是会发生控制指令堆积在队列中间件中的风险,而由于大部分队列中间件又自带有消息重试机制,最终会导致iot设备被重复控制和收到延迟时间较长的控制指令,给用户造成很差的体验。
4.由此,目前需要有一种更好的方案来解决现有技术中的问题。


技术实现要素:

5.有鉴于此,本发明提供一种消息的处理方法、装置、终端及存储介质,能够解决现有技术中消息被重复接收导致用户体验很差的技术问题。
6.本发明解决上述技术问题的技术方案如下:
7.本发明实施例提出了一种消息的处理方法,应用于iot设备,该方法包括:
8.获取发送给队列中间件的消息;
9.为所述消息添加预设的中间件参数;
10.当从所述队列中间件获取消息时,若基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,则丢弃当前接收到的消息。
11.在一个具体的实施例中,添加预设的中间件参数的消息为控制指令。
12.在一个具体的实施例中,所述中间件参数包括:为所述消息进行所述添加操作时的时间戳;
13.基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
14.判断当前从所述队列中间件获取到的消息中是否包含所述时间戳;
15.若判断结果为是,则确定所述时间戳与当前时间的时间差;
16.若所述时间差大于预设的时间阈值,则确定当前获取到的消息为重复接收到的消息。
17.在一个具体的实施例中,所述中间件参数包括id;其中,不同的所述消息对应不同的所述指令;
18.基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的
消息,包括:
19.判断当前从所述队列中间件获取到的消息中是否包含id;
20.若判断结果为是,则判断所包含的id是否存在于缓存中的消息;
21.若缓存中的消息已存在所包含的id,则确定当前获取到的消息为重复接收到的消息。
22.在一个具体的实施例中,还包括:
23.若所包含的id不存在于缓存中的消息,则将当前获取到的消息放置在缓存中。
24.本发明实施例提出了一种消息的处理装置,应用于iot设备,该装置包括:
25.获取模块,用于获取发送给队列中间件的消息;
26.添加模块,用于为所述消息添加预设的中间件参数;
27.丢弃模块,用于当从所述队列中间件获取消息时,若基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,则丢弃当前接收到的消息。
28.在一个具体的实施例中,所述中间件参数包括:为所述消息进行所述添加操作时的时间戳;
29.所述丢弃模块基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
30.判断当前从所述队列中间件获取到的消息中是否包含所述时间戳;
31.若判断结果为是,则确定所述时间戳与当前时间的时间差;
32.若所述时间差大于预设的时间阈值,则确定当前获取到的消息为重复接收到的消息。
33.在一个具体的实施例中,所述中间件参数包括id;其中,不同的所述消息对应不同的所述指令;
34.所述丢弃模块基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
35.判断当前从所述队列中间件获取到的消息中是否包含id;
36.若判断结果为是,则判断所包含的id是否存在于缓存中的消息;
37.若缓存中的消息已存在所包含的id,则确定当前获取到的消息为重复接收到的消息。
38.本发明实施例还提出了一种终端,包括处理器与存储器,所述存储器中存储有消息处理的应用程序,所述处理器在执行所述消息处理的应用程序时执行上述的消息处理的方法。
39.本发明实施例还提出了一种存储介质,其中,所述存储介质中存储有消息处理的应用程序,所述消息处理的应用程序被执行时实现上述的消息处理的方法。
40.本发明的有益效果是:
41.本发明实施例提出了一种消息的处理方法、装置、终端及存储介质,应用于iot设备,该方法包括:获取发送给队列中间件的消息;为所述消息添加预设的中间件参数;当从所述队列中间件获取消息时,若基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,则丢弃当前接收到的消息。本方案通过将需要发送给队列中间件的消息添加中间件参数的方式,对消息进行标识,以此后续当队列中间件接收到该消息
时,可以基于中间件参数判断该消息是否为重复接收到的消息,由此,可以丢弃重复接收到的消息,从而达到解决控制堵塞的问题。
附图说明
42.图1为本发明实施例提供的一种消息的处理方法的流程示意图;
43.图2为本发明实施例提供的一种消息的处理装置的结构示意图;
44.图3为本发明实施例提供的一种终端的结构示意图;
45.图4为本发明实施例提供的一种存储介质的结构示意图。
具体实施方式
46.以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
47.本发明实施例提供的一种消息的处理方法,应用于iot设备,如图1所示,该方法包括以下步骤:
48.步骤101、获取发送给队列中间件的消息;
49.具体的,在消息发送给队列中间件之前,先获取该消息。
50.步骤102、为所述消息添加预设的中间件参数;
51.具体的,在获取到消息后,给消息添加预设的中间件参数,具体的中间件参数可以包括:时间戳、id(identity document,身份标识号)等,具体的,若是选择时间戳作为中间件参数,则时间戳的时间为对消息进行首次标记的时间。
52.步骤103、当从所述队列中间件获取消息时,若基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,则丢弃当前接收到的消息。
53.具体的,本方案通过将需要发送给队列中间件的消息添加中间件参数的方式,对消息进行标识,以此后续当队列中间件接收到该消息时,可以基于中间件参数判断该消息是否为重复接收到的消息,由此,可以丢弃重复接收到的消息,从而达到解决控制堵塞的问题。
54.此外,可以对所有发送给队列中间件的消息进行中间件参数的添加,也可以只对其中的控制指令进行调节,添加预设的中间件参数的消息为控制指令。
55.在一个具体的实施例中,所述中间件参数包括:为所述消息进行所述添加操作时的时间戳;
56.基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
57.判断当前从所述队列中间件获取到的消息中是否包含所述时间戳;
58.若判断结果为是,则确定所述时间戳与当前时间的时间差;
59.若所述时间差大于预设的时间阈值,则确定当前获取到的消息为重复接收到的消息。
60.由此,通过给发往队列中间件中的每条指令消息,加上时间戳,当从中间件队列中获取消息的时候,先判断控制消息的时间戳,如果超出允许“时间阀值”,直接选择丢弃控制消息,从而避免例如“1个小时之前发送了开灯指令,用户以为没有控制成功,其实会在1个
小时之后,灯被打开的情况,这个时候用户可能自己都忘记开过灯的尴尬局面”。
61.具体的时间阈值可以基于例如“批量提交周期”、“超时时间”、“心跳周期等来进行设置,也可以人为自定义设置。
62.在一个具体的实施例中,所述中间件参数包括id;其中,不同的所述消息对应不同的所述指令;
63.基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
64.判断当前从所述队列中间件获取到的消息中是否包含id;
65.若判断结果为是,则判断所包含的id是否存在于缓存中的消息;
66.若缓存中的消息已存在所包含的id,则确定当前获取到的消息为重复接收到的消息。
67.进一步的,若所包含的id不存在于缓存中的消息,则将当前接收到的消息放置在缓存中。
68.具体的,在此实施例中,通过给发往队列中间件的每条指令消息,加上唯一id,第一次从中间件队列中获取消息的时候,缓存中没有此id,完成设备控制,然后将此条控制消息放入一个带过期时间的缓存中去,第二次如果同一条设备控制指令由于中间件重试机制而导致再次发送,那么从中间件队列中获取消息后,缓存中已经存在了此id,直接丢弃该控制消息即可。
69.实施例2
70.为了对本发明进行进一步的说明,本发明实施例2还公开了一种消息的处理装置,应用于iot设备,如图2所示,该装置包括:
71.获取模块201,用于获取发送给队列中间件的消息;
72.添加模块202,用于为所述消息添加预设的中间件参数;
73.丢弃模块203,用于当从所述队列中间件获取消息时,若基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,则丢弃当前接收到的消息。
74.进一步的,添加预设的中间件参数的消息为控制指令。
75.进一步的,所述中间件参数包括:为所述消息进行所述添加操作时的时间戳;
76.所述丢弃模块103基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
77.判断当前从所述队列中间件获取到的消息中是否包含所述时间戳;
78.若判断结果为是,则确定所述时间戳与当前时间的时间差;
79.若所述时间差大于预设的时间阈值,则确定当前获取到的消息为重复接收到的消息。
80.进一步的,所述中间件参数包括id;其中,不同的所述消息对应不同的所述指令;
81.所述丢弃模块103基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
82.判断当前从所述队列中间件获取到的消息中是否包含id;
83.若判断结果为是,则判断所包含的id是否存在于缓存中的消息;
84.若缓存中的消息已存在所包含的id,则确定当前获取到的消息为重复接收到的消
息。
85.进一步的,还包括:
86.缓存模块,用于若所包含的id不存在于缓存中的消息,则将当前获取到的消息放置在缓存中。
87.实施例3
88.本发明实施例3还公开了一种终端,如图3所示,包括处理器与存储器,所述存储器中存储有消息处理的应用程序,所述处理器在执行所述消息处理的应用程序时执行以下步骤:
89.步骤a、获取发送给队列中间件的消息;
90.步骤b、为所述消息添加预设的中间件参数;
91.步骤c、当从所述队列中间件获取消息时,若基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,则丢弃当前接收到的消息。
92.进一步的,添加预设的中间件参数的消息为控制指令。
93.进一步的,所述中间件参数包括:为所述消息进行所述添加操作时的时间戳;
94.步骤c中的基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
95.判断当前从所述队列中间件获取到的消息中是否包含所述时间戳;
96.若判断结果为是,则确定所述时间戳与当前时间的时间差;
97.若所述时间差大于预设的时间阈值,则确定当前获取到的消息为重复接收到的消息。
98.进一步的,所述中间件参数包括id;其中,不同的所述消息对应不同的所述指令;
99.步骤c中的基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,包括:
100.判断当前从所述队列中间件获取到的消息中是否包含id;
101.若判断结果为是,则判断所包含的id是否存在于缓存中的消息;
102.若缓存中的消息已存在所包含的id,则确定当前获取到的消息为重复接收到的消息。
103.在一个具体的实施例中,所述处理器在执行所述消息处理的应用程序时还执行以下步骤:
104.若所包含的id不存在于缓存中的消息,则将当前获取到的消息放置在缓存中。
105.实施例4
106.本发明实施例4还公开了一种存储介质,如图4所示,所述存储介质中存储有消息处理的应用程序,所述消息处理的应用程序被执行时实现实施例1中所述的消息处理的方法。
107.本发明实施例提出了一种消息的处理方法、装置、终端及存储介质,应用于iot设备,该方法包括:获取发送给队列中间件的消息;为所述消息添加预设的中间件参数;当从所述队列中间件获取消息时,若基于所述中间件参数确定当前从所述队列中间件获取到的消息为重复接收到的消息,则丢弃当前接收到的消息。本方案通过将需要发送给队列中间件的消息添加中间件参数的方式,对消息进行标识,以此后续当队列中间件接收到该消息
时,可以基于中间件参数判断该消息是否为重复接收到的消息,由此,可以丢弃重复接收到的消息,从而达到解决控制堵塞的问题。
108.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1