本发明涉及数据处理,尤其涉及一种基于消息队列的数据处理方法及装置。
背景技术:
1、随着科技的进步与不断发展,人们对于电池,尤其是新能源动力电池的使用需求越来越大,在新能源动力电池的自动化生产线中,对于电池相关数据的数据处理十分重要。
2、现有的动力电池生产工艺中,比如化成分容工艺,对于实时数据的采集速度非常快,但是由于中位机资源有限,对实时数据的处理速度相对较慢,可能会导致在中位机数据处理过程中的实时数据丢失,因此需要对采集到的实时数据进行临时存储。现有技术中常将实时数据存储在数据库中,或者安装用于临时存储数据的第三方消息队列组件,但是将数据存储在数据库中会对数据进行频繁的写入和读取操作,影响系统的整体性能,安装第三方消息队列组件会占用较多的中位机资源。因此,提出一种能够降低数据丢失率的同时,能够减少对系统资源的占用的技术方案显得尤为重要。
技术实现思路
1、本发明提供了一种基于消息队列的数据处理方法及装置,能够有利于降低数据丢失率的同时,能够减少对系统资源的占用。
2、为了解决上述技术问题,本发明第一方面公开了一种基于消息队列的数据处理方法,所述方法包括:
3、获取待监测端口的至少一种数据的数据类型,并创建每种所述数据类型对应的消息队列;
4、将每种所述数据类型对应的消息队列注册到事件监听循环中,并通过所述事件监听循环监听所述待监测端口;
5、获取监听到的所述待监测端口的实时数据,并根据所述实时数据的实时数据类型,将所述实时数据分发存储到该实时数据类型对应的消息队列中;
6、对于每种所述数据类型对应的消息队列,对该种数据类型对应的消息队列中的所述实时数据进行数据处理,并将处理后的所述实时数据发送到预设设备。
7、作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
8、创建每种所述数据类型对应的数据处理线程池,每个所述数据处理线程池包括至少一个数据处理线程;
9、以及,所述对于每种所述数据类型对应的消息队列,对该种数据类型对应的消息队列中的所述实时数据进行数据处理,包括:
10、对于每种所述数据类型对应的消息队列,当检测到该种数据类型对应的消息队列中存入该种数据类型的实时数据时,调用该种数据类型对应的数据处理线程池中的至少一个所述数据处理线程对所述实时数据进行处理,得到处理后的所述实时数据;
11、对于每种所述数据类型对应的消息队列,当该种数据类型对应的至少一个所述数据处理线程处理完毕所述实时数据时,将每个所述数据处理线程阻塞并保存到该种数据类型对应的数据处理线程池中。
12、作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
13、确定针对所述待监测端口的实时数据的数据获取速率,以及确定针对所述待监测端口的最大数据处理速率;
14、判断所述数据获取速率是否大于所述最大数据处理速率,当所述数据获取速率大于所述最大数据处理速率时,执行所述的根据所述实时数据的实时数据类型,将所述实时数据分发到该实时数据类型对应的消息队列中的操作,当所述数据获取速率小于所述最大数据处理速率时,调用所述实时数据的数据类型对应的数据处理线程池中的至少一个所述数据处理线程对所述实时数据进行处理。
15、作为一种可选的实施方式,在本发明第一方面中,所述对于每种所述数据类型对应的消息队列,当检测到该种数据类型对应的消息队列中存入该种数据类型的实时数据时,调用该种数据类型对应的数据处理线程池中的至少一个所述数据处理线程对所述实时数据进行处理,得到处理后的所述实时数据,包括:
16、对于每种所述数据类型对应的消息队列,当检测到该种数据类型对应的消息队列中存入该种数据类型的实时数据时,通过选择器确定该种数据类型对应的数据处理线程池中没有被占用的至少一个空闲数据处理线程;
17、对于每种所述数据类型对应的消息队列,调用至少一个所述空闲数据处理线程对所述实时数据进行处理,得到处理后的所述实时数据。
18、作为一种可选的实施方式,在本发明第一方面中,所述将处理后的所述实时数据发送到预设设备,包括:
19、对于每种数据类型的所述实时数据,对处理后的该种数据类型的所述实时数据进行数据整合,得到数据整合后的该种数据类型的所述实时数据;
20、对数据整合后的每种数据类型的所述实时数据进行数据打包,并将数据打包后的每种数据类型的所述实时数据发送到预设设备,所述数据打包包括数据加密和数据压缩。
21、作为一种可选的实施方式,在本发明第一方面中,所述获取监听到的所述待监测端口的实时数据,包括:
22、采集所述待监测端口的实时数据,并分析所述实时数据的数据特征;
23、根据所述数据特征,确定所述实时数据的实时数据类型,所述实时数据类型包括温度数据类型、电流数据类型或电压数据类型。
24、作为一种可选的实施方式,在本发明第一方面中,所述待监测端口包括控制器局域网总线端口,所述消息队列包括python消息队列。
25、本发明第二方面公开了一种基于消息队列的数据处理装置,所述装置包括:
26、获取模块,用于获取待监测端口的至少一种数据的数据类型,并创建每种所述数据类型对应的消息队列;
27、注册模块,用于将每种所述数据类型对应的消息队列注册到事件监听循环中,并通过所述事件监听循环监听所述待监测端口;
28、所述获取模块,还用于获取监听到的所述待监测端口的实时数据,并根据所述实时数据的实时数据类型,将所述实时数据分发存储到该实时数据类型对应的消息队列中;
29、数据处理模块,用于对于每种所述数据类型对应的消息队列,对该种数据类型对应的消息队列中的所述实时数据进行数据处理,并将处理后的所述实时数据发送到预设设备。
30、作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
31、创建模块,用于创建每种所述数据类型对应的数据处理线程池,每个所述数据处理线程池包括至少一个数据处理线程;
32、以及,所述数据处理模块对于每种所述数据类型对应的消息队列,对该种数据类型对应的消息队列中的所述实时数据进行数据处理的方式具体包括:
33、对于每种所述数据类型对应的消息队列,当检测到该种数据类型对应的消息队列中存入该种数据类型的实时数据时,调用该种数据类型对应的数据处理线程池中的至少一个所述数据处理线程对所述实时数据进行处理,得到处理后的所述实时数据;
34、对于每种所述数据类型对应的消息队列,当该种数据类型对应的至少一个所述数据处理线程处理完毕所述实时数据时,将每个所述数据处理线程阻塞并保存到该种数据类型对应的数据处理线程池中。
35、作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
36、确定模块,用于确定针对所述待监测端口的实时数据的数据获取速率,以及确定针对所述待监测端口的最大数据处理速率;
37、判断模块,用于判断所述数据获取速率是否大于所述最大数据处理速率,当所述数据获取速率大于所述最大数据处理速率时,触发所述获取模块执行所述的根据所述实时数据的实时数据类型,将所述实时数据分发到该实时数据类型对应的消息队列中的操作,当所述数据获取速率小于所述最大数据处理速率时,调用所述实时数据的数据类型对应的数据处理线程池中的至少一个所述数据处理线程对所述实时数据进行处理。
38、作为一种可选的实施方式,在本发明第二方面中,所述数据处理模块对于每种所述数据类型对应的消息队列,当检测到该种数据类型对应的消息队列中存入该种数据类型的实时数据时,调用该种数据类型对应的数据处理线程池中的至少一个所述数据处理线程对所述实时数据进行处理,得到处理后的所述实时数据的方式具体包括:
39、对于每种所述数据类型对应的消息队列,当检测到该种数据类型对应的消息队列中存入该种数据类型的实时数据时,通过选择器确定该种数据类型对应的数据处理线程池中没有被占用的至少一个空闲数据处理线程;
40、对于每种所述数据类型对应的消息队列,调用至少一个所述空闲数据处理线程对所述实时数据进行处理,得到处理后的所述实时数据。
41、作为一种可选的实施方式,在本发明第二方面中,所述数据处理模块将处理后的所述实时数据发送到预设设备的方式具体包括:
42、对于每种数据类型的所述实时数据,对处理后的该种数据类型的所述实时数据进行数据整合,得到数据整合后的该种数据类型的所述实时数据;
43、对数据整合后的每种数据类型的所述实时数据进行数据打包,并将数据打包后的每种数据类型的所述实时数据发送到预设设备,所述数据打包包括数据加密和数据压缩。
44、作为一种可选的实施方式,在本发明第二方面中,所述获取模块获取监听到的所述待监测端口的实时数据的方式具体包括:
45、采集所述待监测端口的实时数据,并分析所述实时数据的数据特征;
46、根据所述数据特征,确定所述实时数据的实时数据类型,所述实时数据类型包括温度数据类型、电流数据类型或电压数据类型。
47、作为一种可选的实施方式,在本发明第二方面中,所述待监测端口包括控制器局域网总线端口,所述消息队列包括python消息队列。
48、本发明第三方面公开了另一种基于消息队列的数据处理装置,所述装置包括:
49、存储有可执行程序代码的存储器;
50、与所述存储器耦合的处理器;
51、所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明第一方面公开的基于消息队列的数据处理方法。
52、本发明第四方面公开了一种计算机存储介质,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本发明第一方面公开的基于消息队列的数据处理方法。
53、与现有技术相比,本发明实施例具有以下有益效果:
54、本发明实施例中,获取待监测端口的至少一种数据的数据类型,并创建每种数据类型对应的消息队列,将每种数据类型对应的消息队列注册到事件监听循环中,并通过事件监听循环监听待监测端口,获取监听到的待监测端口的实时数据,并根据实时数据的实时数据类型,将实时数据分发存储到该实时数据类型对应的消息队列中,对于每种数据类型对应的消息队列,对该种数据类型对应的消息队列中的实时数据进行数据处理,并将处理后的实时数据发送到预设设备。可见,实施本发明能够将采集到的数据临时存储到消息队列中,实现数据采集与数据处理解耦,能够有效降低因数据处理不及时而导致数据丢失的问题,利用时间循环监听机制,减少没有数据时处理器空转的问题,降低对处理器的占用,同时使用python自带的消息队列,能够减少对系统资源的占用。
1.一种基于消息队列的数据处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于消息队列的数据处理方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的基于消息队列的数据处理方法,其特征在于,所述方法还包括:
4.根据权利要求2或3所述的基于消息队列的数据处理方法,其特征在于,所述对于每种所述数据类型对应的消息队列,当检测到该种数据类型对应的消息队列中存入该种数据类型的实时数据时,调用该种数据类型对应的数据处理线程池中的至少一个所述数据处理线程对所述实时数据进行处理,得到处理后的所述实时数据,包括:
5.根据权利要求1-3任一项所述的基于消息队列的数据处理方法,其特征在于,所述将处理后的所述实时数据发送到预设设备,包括:
6.根据权利要求1-3任一项所述的基于消息队列的数据处理方法,其特征在于,所述获取监听到的所述待监测端口的实时数据,包括:
7.根据权利要求1-3任一项所述的基于消息队列的数据处理方法,其特征在于,所述待监测端口包括控制器局域网总线端口,所述消息队列包括python消息队列。
8.一种基于消息队列的数据处理装置,其特征在于,所述装置包括:
9.一种基于消息队列的数据处理装置,其特征在于,所述装置包括:
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行如权利要求1-7任一项所述的基于消息队列的数据处理方法。
