一种基于消息队列的数据收发方法技术

技术编号:24589974 阅读:24 留言:0更新日期:2020-06-21 02:29
本发明专利技术公开了一种基于消息队列的数据收发方法,属于数据收发领域,包括以下步骤:S1:定义队列结构体、节点结构体,基于这两个结构体定义一系列的消息队列操作的API接口,S2:定义空闲队列和工作队列,定义节点对象的具体元素,S3:定义空闲队列和工作队列的入队和出队接口,S4:通过空闲队列和工作队列的相互导入导出来实现数据的收发。本发明专利技术针对基于消息队列的数据收发方法,该方法能够使消息队列框架接口稳定,第三方使用者无需修改消息队列框架接口;收发任务和硬件收发接口相分离,大大降低了代码的耦合度;扩展性强,可用于任何需要收发缓存的场合;耦合度低,避免了资源的死锁。

A method of data sending and receiving based on message queue

【技术实现步骤摘要】
一种基于消息队列的数据收发方法
本专利技术涉及数据收发领域,具体为一种基于消息队列的数据收发方法。
技术介绍
在工业现场使用总线协议采集感知设备数据和控制设备执行动作时,都会涉猎到协议多条数据接收和多条数据发送的问题。常规做法是建立接收数据链表和发送数据链表,当接收任务接收到工业现场设备数据时,先把数据加入到接收数据链表,然后从接收数据链表中取出一条协议数据进行解析;当发送任务向工业现场设备发送数据时,先把发送数据加入到发送数据链表,然后从发送数据链表中取出协议数据,调用硬件发送接口发送到设备上。这样做的劣势是:以发送举例,发送任务和硬件发送接口调用同一个发送数据链表,容易引起资源死锁;另外,发送任务和硬件发送接口在同一个任务中,无法做到多任务发送和硬件发送接口的分离。从上文不难发现,现有技术的数据收发方法存在一些缺陷:常规的方案由于发送任务和硬件发送接口调用同一个发送数据链表或者硬件接收接口和接收任务调用同一个接收数据链表,容易引起资源死锁;常规的方案无法做到多发送任务和硬件发送接口的分离。为此,提出一种基于消息队列的数据收发方法。
技术实现思路
本专利技术的目的在于提供一种基于消息队列的数据收发方法,以解决上述
技术介绍
中提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种基于消息队列的数据收发方法,包括以下步骤:S1:定义队列结构体、节点结构体,基于这两个结构体定义一系列的消息队列操作的API接口;S2:定义空闲队列和工作队列,定义节点对象的具体元素;S3:定义空闲队列和工作队列的入队和出队接口;S4:通过空闲队列和工作队列的相互导入导出来实现数据的收发。优选的,在S2中,队列的大小既可以运行前静态分配,又可以在运行中根据发送协议数据包动态申请。优选的,在S2中,队列中节点的元素个数和元素类型可以根据实际需要进行自由灵活的扩展,即增删改查,代码的可扩展性强。优选的,在S3中,应用发送任务和硬件发送接口相分离,这样多个发送任务可以同时向硬件发送接口发送协议数据。优选的,在S3中,应用接收任务和硬件接收接口相分离,这样硬件接收接口可以同时向多个接收任务发送数据。优选的,在S4中,发送任务只和空闲队列交互,硬件发送接口只和工作队列交互;接收任务只和工作队列交互,硬件接收接口只和空闲队列交互;这样就避免了资源的死锁问题。与现有技术相比,本专利技术的有益效果是:1、消息队列框架接口稳定,第三方使用者无需修改消息队列框架接口。2、收发任务和硬件收发接口相分离,大大降低了代码的耦合度;问题的追踪和调试更加易于定位和修改。3、使用者只需要创建自己的工作队列和空闲队列即可,使用简单快捷。入门门槛低。4、扩展性强,可用于任何需要收发缓存的场合。5、耦合度低,避免了资源的死锁。附图说明图1为本专利技术的整体流程图。具体实施方式下面将对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术提供一种技术方案:一种基于消息队列的数据收发方法,包括以下步骤:S1:定义队列结构体、节点结构体,基于这两个结构体定义一系列的消息队列操作的API接口;S2:定义空闲队列和工作队列,定义节点对象的具体元素,其中,队列的大小既可以运行前静态分配,又可以在运行中根据发送协议数据包动态申请;队列中节点的元素个数和元素类型可以根据实际需要进行自由灵活的扩展,即增删改查,代码的可扩展性强;S3:定义空闲队列和工作队列的入队和出队接口,其中,应用发送任务和硬件发送接口相分离,这样多个发送任务可以同时向硬件发送接口发送协议数据;应用接收任务和硬件接收接口相分离,这样硬件接收接口可以同时向多个接收任务发送数据;S4:通过空闲队列和工作队列的相互导入导出来实现数据的收发,其中,发送任务只和空闲队列交互,硬件发送接口只和工作队列交互;接收任务只和工作队列交互,硬件接收接口只和空闲队列交互;这样就避免了资源的死锁问题。本专利技术针对基于消息队列的数据收发方法,该方法能够使消息队列框架接口稳定,第三方使用者无需修改消息队列框架接口;收发任务和硬件收发接口相分离,大大降低了代码的耦合度;问题的追踪和调试更加易于定位和修改;使用者只需要创建自己的工作队列和空闲队列即可,使用简单快捷。入门门槛低;扩展性强,可用于任何需要收发缓存的场合;耦合度低,避免了资源的死锁。尽管已经示出和描述了本专利技术的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本专利技术的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本专利技术的范围由所附权利要求及其等同物限定,本专利技术不受上述实施例的限制,在不脱离本专利技术精神和范围的前提下会有各种改进和变化,因此,这意味着在所附权利要求中包括属于本专利技术范围内的所有变化和修改。本文档来自技高网...

【技术保护点】
1.一种基于消息队列的数据收发方法,其特征在于,包括以下步骤:/nS1:定义队列结构体、节点结构体,基于这两个结构体定义一系列的消息队列操作的API接口;/nS2:定义空闲队列和工作队列,定义节点对象的具体元素;/nS3:定义空闲队列和工作队列的入队和出队接口;/nS4:通过空闲队列和工作队列的相互导入导出来实现数据的收发。/n

【技术特征摘要】
1.一种基于消息队列的数据收发方法,其特征在于,包括以下步骤:
S1:定义队列结构体、节点结构体,基于这两个结构体定义一系列的消息队列操作的API接口;
S2:定义空闲队列和工作队列,定义节点对象的具体元素;
S3:定义空闲队列和工作队列的入队和出队接口;
S4:通过空闲队列和工作队列的相互导入导出来实现数据的收发。


2.根据权利要求1所述的一种基于消息队列的数据收发方法,其特征在于:在S2中,队列的大小既可以运行前静态分配,又可以在运行中根据发送协议数据包动态申请。


3.根据权利要求1所述的一种基于消息队列的数据收发...

【专利技术属性】
技术研发人员:杨更新吴浩峰
申请(专利权)人:北京天拓智领科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1