一种适用于分布式消息传输的方法及总线适配器技术

技术编号:24103111 阅读:33 留言:0更新日期:2020-05-09 14:04
本发明专利技术公开了一种适用于分布式消息传输的方法及总线适配器,提供一种适用于消息生产者和消息消费者之间的点到点的通信,消息根据客户端名称直接传输到相应的客户端队列中,不在总线适配器处堆积,提高分布式消息交互效率、减轻总线适配器的负荷。

A method and bus adapter for distributed message transmission

【技术实现步骤摘要】
一种适用于分布式消息传输的方法及总线适配器
本专利技术涉及消息处理
,尤其涉及一种适用于分布式消息传输的方法及总线适配器。
技术介绍
面向消息的中间件(Message-OrientedMiddleware,MOM)指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。现有技术中,发布/订阅的面向消息的中间件,系统A将消息发送到消息中间件,若系统B订阅系统A发送的消息,则将该消息推送给系统B。在大数据量的情况下,消息中间件承担的负荷过重,导致消息产生积压、延迟等情况发生。
技术实现思路
本专利技术的目的是为了克服现有技术的不足,提供一种适用于分布式消息传输的方法及总线适配器。本专利技术提供了一种适用于分布式消息传输的方法,包括:步骤S1:所述总线适配器根据保存的地址信息生成注册节点消息,创建分布式节点;步骤S2:所述总线适配器寻本文档来自技高网...

【技术保护点】
1.一种适用于分布式消息传输的总线适配器,其特征在于,包括:/n生成创建模块,用于根据保存的地址信息生成注册节点消息,创建分布式节点;/n寻找发送模块,用于寻找除新创建之外的其他分布式节点,向所有发现的分布式节点发送生成创建模块生成的注册节点消息的异步信息;/n创建模块,用于创建本地客户端连接处理线程;/n接收判断模块,用于接收消息并判断消息类型;/n判断执行模块,用于所述接收判断模块判断消息类型为分布式消息时,判断所述分布式消息的类型,执行相应的操作;/n判断模块,用于所述接收判断模块判断消息类型为注册分布式节点的响应消息时,判断接收的注册分布式节点的响应消息中的远程地址信息和分布式节点的名...

【技术特征摘要】
1.一种适用于分布式消息传输的总线适配器,其特征在于,包括:
生成创建模块,用于根据保存的地址信息生成注册节点消息,创建分布式节点;
寻找发送模块,用于寻找除新创建之外的其他分布式节点,向所有发现的分布式节点发送生成创建模块生成的注册节点消息的异步信息;
创建模块,用于创建本地客户端连接处理线程;
接收判断模块,用于接收消息并判断消息类型;
判断执行模块,用于所述接收判断模块判断消息类型为分布式消息时,判断所述分布式消息的类型,执行相应的操作;
判断模块,用于所述接收判断模块判断消息类型为注册分布式节点的响应消息时,判断接收的注册分布式节点的响应消息中的远程地址信息和分布式节点的名称是否存在于客户端列表中;
封装发送模块,用于所述判断模块判断存在将本地地址信息和本地连接的所述客户端名称使用注册节点消息封装后发送至所述远程地址信息对应的远程总线适配器,触发所述接收判断模块;
删除模块,用于所述接收判断模块判断消息类型为分布式节点异常退出消息时,将异常节点的地址信息和对应的所有客户端名称从客户端列表中删除,触发所述接收判断模块;
丢弃模块,用于所述接收判断模块判断消息类型为未知消息时,丢弃所述未知消息,触发所述接收判断模块;
所述判断执行模块具体包括:
第一判断子模块,用于所述判断执行模块判断所述分布式消息的类型为节点间通讯消息时,判断目标节点客户端的名称是否存在于保存的客户端列表中,是则触发第二判断子模块,否则触发接收判断模块;
所述第二判断子模块,用于判断所述目标节点客户端的类型;
第一保存子模块,用于所述第二判断子模块判断类型为本地客户端,将对话消息保存至所述指定名称的客户端的消息队列中,触发所述接收判断模块;
第一封装发送子模块,用于所述第二判断子模块判断类型为远程客户端,使用节点间通讯消息封装所述目标节点客户端的名称和对话消息,发送至所述目标节点客户端,触发所述接收判断模块。


2.如权利要求1所述的总线适配器,其特征在于,所述判断执行模块具体包括:
第二保存子模块,用于当所述判断执行模块判断所述分布式消息类型为注册节点消息时,将注册节点消息中的地址信息保存至所述客户端列表中,并将注册节点的所述客户端名称保存至所述客户端列表中;
第三判断子模块,用于判断所述注册节点信息的类型;
第二封装发送子模块,用于所述第三判断子模块判断所述注册节点信息的类型为其他分布式节点的注册信息,将本地地址信息和本地连接的所述客户端名称使用注册节点信息封装后发送至其他分布式节点;
第四判断子模块,用于所述第三判断子模块判断所述注册节点信息的类型为其他分布式节点回复的响应,判断所述注册节点信息中的地址信息是否在监控列表中,是则触发所述接收判断模块,否则触发添加子模块;
所述添加子模块,用于将所述注册节点信息中的地址信息添加到所述监控列表中,触发所述接收判断模块。


3.如权利要求1所述的总线适配器,其特征在于,所述判断执行模块具体包括:
遍历判断子模块,用于当所述判断执行模块判断所述分布式消息类型为广播消息时,遍历所述客户端列表中所有的客户端并判断客户端类型,如所述客户端的类型为本地客户端触发所述第三保存子模块,如所述客户端类型为远程客户端则触发所述接收判断模块;
第三保存子模块,用于将广播消息保存至客户端的消息队列中,触发所述接收判断模块。


4.如权利要求1所述的总线适配器,其特征在于,所述判断执行模块具体包括:
第五判断子模块,用于当所述判断执行模块判断所述分布式消息类型为踢除客户端消息时,判断被踢除客户端的名称是否存在于保存的客户端列表中,是则触发第六判断子模块,否则触发接收判断模块;
所述第六判断子模块,用于判断所述被踢除客户端的类型,如为本地客户端则触发置位保存子模块,如为远程客户端则触发第三封装发送子模块;
所述置位保存子模块,用于将所述被踢除客户端的被踢除标志置位,将踢除成功的消息放入踢除客户端的消息队列中;
所述第三封装发送子模块,用于使用踢除客户端消息封装所述被踢除客户端的名称和踢除客户端的名称,发送至所述被踢除客户端,触发所述接收判断模块。


5.如权利要求1所述的总线适配器,其特征在于,所述判断执行模块具体包括:
第七判断子模块,用于当所述判断执行模块判断所述分布式消息类型为新客户端加入消息时,判断新客户端的名称是否存在于保存的客户端列表中,是则触发发送子模块,否则触发保存发送子模块;
所述发送子模块,用于向对应于新客户端对应的地址信息的总线适配器发送踢除该客户端的消息,触发所述接收判断模块;
所述保存发送子模块,用于将新客户端的名称保存至所述客户端列表中,使用系统通知消息封装该客户端加入的消息,发送至所述本地客户端的消息队列中,触发所述接收判断模块。


6.如权利要求1所述的总线适配器,其特征在于,所述判断执行模块具体包括:
第八判断子模块,用于当所述判断执行模块判断所述分布式消息类型为客户端断开消息时,判断断开客户端的名称是否存在于保存的客户端列表中,是则触发第九判断子模块,否则触发所述接收判断模块;
所述第九判断子模块,用于判断所述断开客户端的类型,如为本地客户端则触发所述接收判断模块,如为远程客户端则触发删除保存子模块;
所述删除保存子模块,用于从所述客户端列表中删除对应的断开客户端的名称,使用系统通知消息封装该客户端断开的信息并保存至所有本地客户端的消息队列中,触发所述接收判断模块。


7.如权利要求1所述的总线适配器,其特征在于,所述创建模块具体包括:
侦听子模块,用于侦听本地客户端套接字连接;
接收子模块,用于接收所述本地客户端的套接字连接;
提示接收子模块,用于提示用户输入客户端名称并等待接收;
第十判断子模块,用于判断所述提示接收子模块接收的客户端名称是否有效,是则触发第十一判断子模块,否则触发所述提示接收子模块;
所述第十一判断子模块,用于判断所述接收的客户端名称是否存在于保存的客户端列表中,是则触发提示接收子模块,否则触发封装保存子模块;
所述封装保存子模块,用于将所述接收的客户端名称保存到所述客户端列表中,使用系统通知消息封装该客户端已加入的信息并保存至所有本地客户端的消息队列中;
第四封装发送子模块,用于使用新客户端加入消息封装该客户端已加入的消息发送给所述除新创建之外的其他分布式节点;
第十二判断子模块,用于判断是否有用户输入,是则触发第四保存子模块,否则触发读取判断子模块;
所述第四保存子模块,用于将用户输入的消息放到当前客户端的消息队列中,触发读取判断子模块;
所述读取判断子模块,用于读取当前客户端的被踢除标志,根据被踢除标志判断当前客户端是否被踢除,是则触发通知结束子模块,否则触发读取判断子模块;
所述通知结束子模块,用于通知当前客户端其已经被踢除,并强制结束当前客户端线程;
所述读取判断子模块,用于从当前客户端的消息队列中读取一条消息,判断消息类型,如为系统通知消息则触发第一打印子模块,如为本地客户端私有消息则触发第二打印子模块,如为本地广播消息则触发第三打印子模块,如为命令消息则触发处理子模块;
所述第一打印子模块,用于打印所述系统通知消息;
所述第二打印子模块,用于打印所述本地客户端私有消息;
所述第三打印子模块,用于打印所述本地广播消息;
所述处理子模块,用于处理所述命令消息。


8.如权利要求7所述的总线适配器,其特征在于,所述处理子模块具体包括:
第一判断单元,用于判断所述命令消息的类型,如为踢除指定名称的客户端消息则触发第二判断单元,如为给指定名称的客户端发送消息则触发第四判断单元,如为广播消息则触发遍历判断单元,如为退出总线系统消息则触发结束单元;
所述第二判断单元,用于判断踢除指定名称的客户端是否存在于保存的客户端列表中,是则触发第三判断单元,否则触发读取判断子模块;
所述第三判断单元,用于判断踢除指定名称的客户端的类型,如为本地客户端则触发置位保存单元,如为远程客户端则触发第一封装发送单元;
所述置位保存单元,用于将踢除指定名称的客户端的被踢除标志置位,将踢除成功消息放入踢除客户端的消息队列中,触发读取判断子模块;
所述第一封装发送单元,用于使用踢除客户端消息封装踢除指定名称的客户端的名称和踢除客户端的名称,发送至踢除指定名称的客户端,触发读取判断子模块;
所述第四判断单元,用于判断指定名称的客户端是否存在于保存的客户端列表中,是则触发第五判断单元,否则触发读取判断子模块;
所述第五判断单元,用于判断指定名称的客户端的类型,如为本地客户端则触发第一保存单元,如为远程客户端则触发第二封装发送单元;
所述第一保存单元,用于经对话消息保存至指定名称的客户端的消息队列中,触发读取判断子模块;
所述第二封装发送单元,用于使用节点间通讯消息封装指定名称的客户端名称和对话消息,发送至指定名称的客户端,触发读取判断子模块;
所述遍历判断单元,用于遍历客户端列表中所有的客户端,如客户端的类型为...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:北京;11

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

1