一种用于物联网与机器人的异步消息处理反馈方法与流程

未命名 10-08 阅读:94 评论:0


1.本发明涉及到信息处理技术领域,尤其涉及到一种用于物联网与机器人的异步消息处理反馈方法。


背景技术:

2.异步消息处理是一种处理请求和响应的方式,它不需要发送者等待接收者的响应,通常用于处理大量并发请求和避免请求的阻塞,如:网络中的客户端和服务器之间的通信,或者是分布式系统中不同组件之间的通信。异步消息通过将请求和响应分别放入消息列中,由消息队列负责传递它们,从而实现异步处理的效果,可以避免发送者和接收者之间的紧密耦合,并提高系统的可伸缩性和性能。
3.在异步消息处理中,发送者发送请求后,可以继续执行其他任务,而不需要等待接收者的响应。当接收者完成对请求的处理后,会将响应发送回发送者,发送者可以在稍后的时间点处理响应。
4.现有的异步消息处理会采用:创建线程等待处理后再反馈给主线程,使用消息队列如:kafka、rabbitmq来暂存数据等待消费者进行消费,在数据处理时使用轮询判断获取需要的数据,再进行处理反馈。
5.其不足是:处理请求是实时的,每次请求只能处理一批数据;无法等待到所需数据加载完成后再进行处理,需要进行额外的步骤处理和数据存储才能完成一项完整的任务;需要进行轮询判断任务是否完成,占用系统cpu处理资源。
6.因此,亟需一种能够解决以上一种或多种问题的用于物联网与机器人的异步消息处理反馈方法。


技术实现要素:

7.为解决现有技术中存在的一种或多种问题,本发明提供了一种用于物联网与机器人的异步消息处理反馈方法。本发明为解决上述问题采用的技术方案是:一种用于物联网与机器人的异步消息处理反馈方法,所述方法包括:s010,发起,任务发起端使用消息队列系统,对消息进行异步处理和消息反馈;
8.s020,发起端输出,所述任务发起端向任务处理端输出任务处理请求,并发送带有任务编号tid、数据编号、数据下发完成标志的任务数据;
9.s030,处理端接收,所述任务处理端在接收到所述任务处理请求后,将对接收到的所述任务数据进行接收处理;
10.s031,接收处理,将同一所述任务编号tid的数据放到同一块数据缓存位置,期间等待并判断是否接收到所述任务发起端输出的所述数据下发完成标志;
11.s040,处理端处理,若所述任务处理端接收到所述数据下发完成标志,则判断所述任务处理端接收到的数据是否与所述任务发起端传输的数据相同,若所述任务处理端未接收到所述数据下发完成标志,则继续等待接收;
12.s041,若所述任务处理端接收到的数据与所述任务发起端传输的数据相同,则判断数据完整并开始处理任务;
13.s042,若所述任务处理端接收到的数据与所述任务发起端传输的数据不相同,并被判断为数据缺少,则获取缺少数据的所述任务编号tid和所述数据编号;
14.s043,所述任务处理端向所述任务发起端返回信息,并请求所述任务发起端传输缺少数据/重新传输,所述返回信息为:缺少数据的所述任务编号tid和所述数据编号。
15.进一步地,还包括:s032,所述任务处理端使用hashmap、redis对所述数据缓存位置内的数据进行维护。
16.进一步地,还包括:s050,完成,所述任务处理端完成任务处理后,向所述任务发起端返回处理成功状态。
17.在一些实施例中,s010中的所述消息队列系统为kafka消息队列系统;本方法在使用时通过kafka消息队列系统对设备适配器上报的数据进行缓冲。
18.本发明取得的有益价值是:本发明通过使用上述方法实现了大批量数据无需一次性传输,可分批多次传输,并且任务发起端无需等待任务执行完成而阻塞程序,只需等待任务处理完成反馈后进行后续的处理;通过判断数据是否完整,以执行后续的按缺少数据进行重新传输,进而提高效率;
19.通过kafka消息队列系统对数据进行缓冲,以实现数据接收端接收的数据是有序的,避免数据处理速度不匹配导致数据丢失,解除任务发起端和任务处理端的耦合;
20.以及能够适用在任务发起端和任务接收端不在同一服务器的分布式系统。以上极大地提高了本发明的实用价值。
附图说明
21.图1为本发明的执行示意图;
22.图2为本发明的简要示意图;
23.图3为本发明的示意框图。
具体实施方式
24.为使本发明的上述目的、特征和优点能够更加浅显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于此描述的其他方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例限制。
25.如图1-图3所示,本发明公开了一种用于物联网与机器人的异步消息处理反馈方法,所述方法包括:s010,发起,任务发起端使用消息队列系统,对消息进行异步处理和消息反馈;
26.s020,发起端输出,所述任务发起端向任务处理端输出任务处理请求,并发送带有任务编号tid、数据编号、数据下发完成标志的任务数据;
27.s030,处理端接收,所述任务处理端在接收到所述任务处理请求后,将对接收到的所述任务数据进行接收处理;
28.s031,接收处理,将同一所述任务编号tid的数据放到同一块数据缓存位置,期间
等待并判断是否接收到所述任务发起端输出的所述数据下发完成标志;
29.s032,所述任务处理端使用hashmap、redis对所述数据缓存位置内的数据进行维护;
30.s040,处理端处理,若所述任务处理端接收到所述数据下发完成标志,则判断所述任务处理端接收到的数据是否与所述任务发起端传输的数据相同,若所述任务处理端未接收到所述数据下发完成标志,则继续等待接收;
31.s041,若所述任务处理端接收到的数据与所述任务发起端传输的数据相同,则判断数据完整并开始处理任务;
32.s042,若所述任务处理端接收到的数据与所述任务发起端传输的数据不相同,并被判断为数据缺少,则获取缺少数据的所述任务编号tid和所述数据编号;
33.s043,所述任务处理端向所述任务发起端返回信息,并请求所述任务发起端传输缺少数据/重新传输,所述返回信息为:缺少数据的所述任务编号tid和所述数据编号;
34.s050,完成,所述任务处理端完成任务处理后,向所述任务发起端返回处理成功状态。
35.需要指出的是,结合图1,s010中的所述消息队列系统为kafka消息队列系统,kafka是一种分布式的基于发布/订阅模式的消息队列系统,主要应用于大数据实时处理领域,它由apache开发,是一种高吞吐量的分布式消息系统,可以处理高并发和大量数据。再是,上述方法在使用的过程中通过kafka消息队列系统对设备适配器上报的数据进行缓冲。
36.需要说明的是,hashmap是java中一种基于哈希表实现的键值对存储结构,可以用于快速存储和访问大量的数据;redis(remote dictionary server)是一个开源的内存数据库,它支持多种数据类型,如字符串、列表、集合、哈希等,redis使用c语言编写,具有高性能、高可用性和可扩展性的特点。
37.以及一种装置,其包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行上述的用于物联网与机器人的异步消息处理反馈方法的计算机程序。
38.以及一种可读存储介质,所述存储介质存储有能够被处理器加载并执行的计算机程序,所述计算机程序为上述的用于物联网与机器人的异步消息处理反馈方法。
39.综上所述,本发明通过使用上述方法实现了大批量数据无需一次性传输,可分批多次传输,并且任务发起端无需等待任务执行完成而阻塞程序,只需等待任务处理完成反馈后进行后续的处理;通过判断数据是否完整,以执行后续的按缺少数据进行重新传输,进而提高效率;通过kafka消息队列系统对数据进行缓冲,以实现数据接收端接收的数据是有序的,避免数据处理速度不匹配导致数据丢失,解除任务发起端和任务处理端的耦合;以及能够适用在任务发起端和任务接收端不在同一服务器的分布式系统。
40.本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储
介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
41.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
42.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
43.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
44.以上所述的实施例仅表达了本发明的一种或多种实施方式,其描述较为具体和详细,但并不能因此理解为对本发明专利的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明的构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。

技术特征:
1.一种用于物联网与机器人的异步消息处理反馈方法,其特征在于,所述方法包括:s010,发起,任务发起端使用消息队列系统,对消息进行异步处理和消息反馈;s020,发起端输出,所述任务发起端向任务处理端输出任务处理请求,并发送带有任务编号tid、数据编号、数据下发完成标志的任务数据;s030,处理端接收,所述任务处理端在接收到所述任务处理请求后,将对接收到的所述任务数据进行接收处理;s031,接收处理,将同一所述任务编号tid的数据放到同一块数据缓存位置,期间等待并判断是否接收到所述任务发起端输出的所述数据下发完成标志;s040,处理端处理,若所述任务处理端接收到所述数据下发完成标志,则判断所述任务处理端接收到的数据是否与所述任务发起端传输的数据相同,若所述任务处理端未接收到所述数据下发完成标志,则继续等待接收;s041,若所述任务处理端接收到的数据与所述任务发起端传输的数据相同,则判断数据完整并开始处理任务;s042,若所述任务处理端接收到的数据与所述任务发起端传输的数据不相同,并被判断为数据缺少,则获取缺少数据的所述任务编号tid和所述数据编号;s043,所述任务处理端向所述任务发起端返回信息,并请求所述任务发起端传输缺少数据/重新传输,所述返回信息为:缺少数据的所述任务编号tid和所述数据编号。2.根据权利要求1所述的一种用于物联网与机器人的异步消息处理反馈方法,其特征在于,还包括:s032,所述任务处理端使用hashmap、redis对所述数据缓存位置内的数据进行维护。3.根据权利要求1所述的一种用于物联网与机器人的异步消息处理反馈方法,其特征在于,s010中的所述消息队列系统为kafka消息队列系统。4.根据权利要求1所述的一种用于物联网与机器人的异步消息处理反馈方法,其特征在于,通过kafka消息队列系统对设备适配器上报的数据进行缓冲。5.根据权利要求1所述的一种用于物联网与机器人的异步消息处理反馈方法,其特征在于,还包括:s050,完成,所述任务处理端完成任务处理后,向所述任务发起端返回处理成功状态。

技术总结
本发明公开了一种用于物联网与机器人的异步消息处理反馈方法,包括:S010,发起;S020,发起端输出,任务发起端向任务处理端输出任务处理请求,并发送任务数据;S030,处理端接收,任务处理端对接收到的任务数据进行处理;S040,处理端处理,判断任务处理端接收到的数据是否与任务发起端传输的数据相同;S041,若传输的数据相同,则数据完整并开始处理任务;S042,若传输的数据不相同,则获取缺少数据;S043,任务处理端向任务发起端返回信息,并请求任务发起端传输缺少数据/重新传输。实现大批量数据无需一次性传输,可分批多次传输,并且任务发起端无需等待任务执行完成而阻塞程序,只需等待任务处理完成反馈后进行后续的处理。理。理。


技术研发人员:宋航宇 方堃钟
受保护的技术使用者:深圳市奇航疆域技术有限公司
技术研发日:2023.07.25
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐