CN113783838A - 一种订阅方法、订阅控制装置及计算机可读存储介质 - Google Patents
一种订阅方法、订阅控制装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113783838A CN113783838A CN202110899907.6A CN202110899907A CN113783838A CN 113783838 A CN113783838 A CN 113783838A CN 202110899907 A CN202110899907 A CN 202110899907A CN 113783838 A CN113783838 A CN 113783838A
- Authority
- CN
- China
- Prior art keywords
- subscription
- theme
- sub
- topic
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000013507 mapping Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 13
- 239000010410 layer Substances 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 239000002356 single layer Substances 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/325—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种订阅方法、订阅控制装置及存储介质,所述方法包括:接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端,所述订阅主题以哈希表形式和订阅树形式进行存储;将所述发布主题发送至与所述发布主题相匹配的订阅客户端。本发明通过将精确主题和通配主题根据特性分为2种不同的数据结构维护,最大限度降低复杂度,提高了运作效率。
Description
技术领域
本发明涉及信息传输领域,尤其涉及一种订阅方法、订阅控制装置及计算机可读存储介质。
背景技术
MQTT(Message Queuing Telemetry Transport消息队列遥测传输)是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
目前,实现MQTT Broker最主要的瓶颈点在于订阅关系的维护,现有订阅关系的数据结构导致MQTT Broker的消息转发效率较低。
发明内容
本发明的主要目的在于提出一种订阅方法、订阅控制装置及计算机可读存储介质,旨在解决现有订阅关系的数据结构导致消息转发效率低的问题。
为实现上述目的,本发明提供一种订阅方法,包括步骤:
接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端,所述订阅主题以哈希表形式和订阅树形式进行存储;
将所述发布主题发送至与所述发布主题相匹配的订阅客户端。
可选地,所述订阅客户端的订阅主题与订阅客户端存在映射关系;所述接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端的步骤包括:
接收发布客户端发布的发布主题,判断与所述发布主题相匹配的订阅主题;
若所述订阅主题为精确主题,则将所述发布主题与所述哈希表匹配并获取匹配结果;
根据所述映射关系和所述匹配结果,获取与所述发布主题相对应的订阅客户端。
可选地,所述接收发布客户端发布的发布主题,判断与所述发布主题相匹配的订阅主题的步骤之后,包括:
若所述订阅主题为通配主题,则将所述订阅主题以及所述发布主题拆分成预设数量的不同层级的子订阅主题和子发布主题;
将位于不同层级的子发布主题和子订阅主题依次进行匹配并获取与所述发布主题相对应的订阅客户端。
可选地,所述将位于不同层级的子发布主题和子订阅主题依次进行匹配并获取与所述发布主题相对应的订阅客户端的步骤包括:
将所述不同层级的子订阅主题和子发布主题按照从高至低的顺序排列;
根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子发布主题;
若所述同一层级的子订阅主题存储有与同一层级的子订阅主题相对应层级的子发布主题,则获取所述子订阅主题对应的层级的节点数据;
根据所述节点数据,判断下一层级的子订阅主题是否存储有与下一层级的子订阅主题相对应层级的子发布主题,直至将所有层级判断完成并获取每一个层级与发布主题相对应的订阅客户端。
可选地,所述将所述发布主题发送至与所述发布主题相匹配的订阅客户端的步骤之后,还包括:
接收订阅客户端发送的待订阅主题,判断所述待订阅主题的主题类型;
若所述主题类型为精确主题,则在所述哈希表中查找所述待订阅主题是否存在;
若在所述哈希表中不存在所述待订阅主题,则增加所述待订阅主题并将所述待订阅主题与所述订阅客户端关联;
若在所述哈希表中存在有所述待订阅主题,则将所述待订阅主题与所述订阅客户端关联。
可选地,所述接收订阅客户端发送的待订阅主题,判断所述待订阅主题的主题类型的步骤之后,还包括:
若所述主题类型为通配主题,则将所述待订阅主题和所述预存的订阅客户端的订阅主题拆分成预设数量的不同层级的子待订阅主题和子订阅主题;
将所述不同层级的子待订阅主题和子订阅主题按照从高至低的顺序排列;
根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子待订阅主题,直至将所有层级判断完成;
若所述同一层级的子订阅主题没有存储有与同一层级的子订阅主题相对应层级的子待订阅主题,则将所述子待订阅主题添加到没有存储有同一层级的子订阅主题相对应的层级中;
将所述订阅客户端关联到与添加所述子待订阅主题的层级相对应的节点数据中。
可选地,所述将所述订阅客户端关联到与添加所述子待订阅主题的层级相对应的节点数据中的步骤之后,还包括:
接收订阅客户端发送的待取消订阅主题,判断所述待取消订阅主题的类型;
若所述待取消订阅主题的类型为精确主题,则在所述哈希表中查找所述待取消订阅主题是否存在;
若所述待取消订阅主题存在,则删除所述取消订阅主题以及所述待取消订阅主题与所述订阅客户端之间的关联。
可选地,所述接收订阅客户端发送的待取消订阅主题,判断所述待取消订阅主题的类型的步骤之后,还包括:
若所述待取消订阅主题的类型为通配主题,则将所述待取消订阅主题和所述预存的订阅客户端的订阅主题拆分成预设数量的不同层级的子待取消订阅主题和子订阅主题;
将所述不同层级的子待取消订阅主题和子订阅主题按照从高至低的顺序排列;
根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子待取消订阅主题,直至将所有层级判断完成;
若所述同一层级的子订阅主题存储有与同一层级的子订阅主题相对应层级的子待取消订阅主题,则删除与所述子待取消订阅主题对应层级相关联的订阅客户端;
根据预设顺序,依次判断与所述子待取消订阅主题对应层级的子订阅主题是否存储有与所述子待订阅主题相对应的节点数据;
根据所述与所述子待订阅主题相对应的节点数据执行对应的操作。
为实现上述目的,本发明还提供一种订阅控制装置,所述订阅控制装置包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的订阅方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的订阅方法的步骤。
本发明提出的一种订阅方法、订阅控制装置及计算机可读存储介质,通过接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端,保证了订阅客户端与发布客户端的准确匹配,避免发布客户端将未订阅的主题发送到订阅客户端;通过将所述发布主题发送至与所述发布主题相匹配的订阅客户端,实现了订阅客户端对发布主题的及时获取;通过将订阅主题以哈希表和订阅树的形式进行存储,可以根据订阅主题的不同采用哈希表和订阅树两种数据结构形式的不同特性,最大限度降低结构复杂度,提高发布主题的分发效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明订阅方法第一实施例的流程示意图;
图3为本发明订阅方法第二实施例中步骤S10的细化流程示意图;
图4为本发明订阅方法第三实施例中流程示意图;
图5为本发明订阅方法第三实施例中步骤S15的细化流程示意图;
图6为本发明订阅方法中发布主题与订阅主题为通配主题时的匹配流程;
图7为本发明订阅方法第四实施例中流程示意图;
图8为本发明订阅方法第五实施例中流程示意图;
图9为本发明订阅方法中新增订阅通配主题的流程示意图;
图10为本发明订阅方法第六实施例中流程示意图;
图11为本发明订阅方法中删除订阅通配主题的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参照图1,图1为本发明各个实施例中所提供的订阅控制装置的硬件结构示意图。所述订阅控制装置包括通信模块01、存储器02及处理器03等部件。本领域技术人员可以理解,图1中所示出的订阅控制装置还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中,所述处理器03分别与所述存储器02和所述通信模块01连接,所述存储器02上存储有计算机程序,所述计算机程序同时被处理器03执行。
通信模块01,可通过网络与外部设备连接。通信模块01可以接收外部设备发出的数据,还可发送数据、指令及信息至所述外部设备,所述外部设备可以是手机、平板电脑、笔记本电脑和台式电脑等电子设备。
存储器02,可用于存储软件程序以及各种数据。存储器02可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(根据第一预设策略控制拨叉的挂挡压力,以降低换挡挡位对应的同步器的同步套与结合齿的实时转速差至第一预设阈值)等;存储数据区可存储根据订阅控制装置的使用所创建的数据或信息等。此外,存储器02可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器03,是订阅控制装置的控制中心,利用各种接口和线路连接整个订阅控制装置的各个部分,通过运行或执行存储在存储器02内的软件程序和/或模块,以及调用存储在存储器02内的数据,执行订阅控制装置的各种功能和处理数据,从而对订阅控制装置进行整体监控。处理器03可包括一个或多个处理单元;优选的,处理器03可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器03中。
本领域技术人员可以理解,图1中示出的订阅控制装置结构并不构成对订阅控制装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
根据上述硬件结构,提出本发明方法各个实施例。
参照图2,在本发明订阅方法的第一实施例中,所述订阅方法包括步骤:
步骤S10,接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端,所述订阅主题以哈希表形式和订阅树形式进行存储;
本发明的执行主体为订阅控制装置,即为MQTT Broker,本发明可应用于机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中。例如,当本发明应用在在个人消息订阅上,所述发布主题可以为网页消息,例如新闻、通知消息等;所述发布客户端可以为网站服务器,所述订阅客户端可以是手机、电脑、平板电脑等可以订阅消息同时也可以接收消息的设备,所述订阅主题为用户通过订阅客户端所订阅的某一主题的新闻、通知等消息或者是用户感兴趣的关键字等信息;当本发明应用在医疗设备上时,所述发布客户端可以安装在医生办公室的呼叫铃,所述发布主题可以为通过呼叫铃所发出的针对特定患者床位的消息,所述订阅客户端可以为安装在病房中患者床位的呼叫铃,所述订阅主题可以为患者的呼叫铃所连接的主治医生的连接关系。
所述哈希表为通过存储有订阅客户端与发布主题之间的映射关系,而可以使发布主题直接发送到与发布主题相对应的订阅客户端的数据结构;所述订阅树为根据分层来存储订阅客户端与发布主题之间的映射关系,从而通过分层依次查找对应的订阅客户端的树形数据结构,其中,在订阅树中,可通过分隔符“/”来将发布主题以及订阅主题进行分层,例如订阅主题为“aabbcc”,则可通过“/”将所述订阅主题分层为“aa/bb/cc”或“aab/bcc”等。
另外,在本实施例中,可将订阅主题以及发布主题根据单层通配符“+”以及多层通配符“#”划分为精确主题以及通配主题,划分规则为订阅主题以及发布主题中含有单层通配符和多层通配符的便分类为通配主题,反之,则为精确主题,其中,通配主题以订阅树的形式进行存储,精确主题以哈希表的形式进行存储;需要说明的是,在MQTT协议中,主题过滤可分为3类,分别为:精确匹配主题,例如:aaa/bbb/ccc;单层通配主题(+),例如:aaa/+/ccc;多层通配主题(#),例如:aaa/#,而在本发明中将这3类主题整合为2类,即精确主题以及通配主题,可以最大限度降低结构复杂度,提高消息分发效率。
步骤S20,将所述发布主题发送至与所述发布主题相匹配的订阅客户端。
本发明提出的一种订阅方法,通过接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端,保证了订阅客户端与发布客户端的准确匹配,避免发布客户端将未订阅的主题发送到订阅客户端;通过将所述发布主题发送至与所述发布主题相匹配的订阅客户端,实现了订阅客户端对发布主题的及时获取;通过将订阅主题以哈希表和订阅树的形式进行存储,可以根据订阅主题的不同采用哈希表和订阅树两种数据结构形式的不同特性,最大限度降低结构复杂度,提高发布主题的分发效率。
进一步地,参照图3,在基于本发明的第一实施例所提出的本发明订阅方法,本发明提出第二实施例,所述步骤S10包括:
步骤S11,接收发布客户端发布的发布主题,判断与所述发布主题相匹配的订阅主题并获取所述订阅主题的主题类型;
在本实施例中,所述订阅主题可分为精确主题和通配主题两种类型,所述订阅主题为用户通过订阅客户端订阅的且已经存储于订阅控制装置中的订阅主题,在本实施例中,可根据发布的主题直接与订阅主题进行匹配。
步骤S12,若所述订阅主题为精确主题,则将所述发布主题与所述哈希表匹配并获取匹配结果;
所述精确主题为不包含单层通配符“+”或多层通配符“#”的主题,在本实施例中,可直接将发布主题与哈希表中存储的主题进行比较,判断是否有相同的主题即可,所述匹配结果为匹配成功或匹配失败,当匹配成功时,执行步骤S13,当匹配失败时,则返回匹配失败提示信息并停止匹配,其匹配过程,是通过哈希算法来实现的。
步骤S13,根据所述映射关系和所述匹配结果,获取与所述发布主题相对应的订阅客户端;
在本实施例中,所述映射关系为订阅客户端的订阅主题与订阅客户端之间的映射关系,每一条订阅主题都有对应的一个或多个订阅客户端,当发布主题与订阅主题相符合时,便可以获取与所述发布主题向对应的订阅客户端并把发布主题发送至所有订阅客户端,所述匹配结果为匹配成功或匹配失败,需要说明的是,只有在匹配成功的前提下,才将发布主题发送至订阅客户端。
在本发明中,通过接收发布客户端发布的发布主题,判断与所述发布主题相匹配的订阅主题并获取所述订阅主题的主题类型,在主题类型为精确主题的情况下,通过哈希表直接查找对应的订阅客户端,可以减小查询的难度,提高消息发送效率。
进一步地,参照图4,在基于本发明的第一实施例所提出的本发明订阅方法,本发明提出第三实施例,所述步骤S11之后,还包括:
步骤S14,若所述订阅主题为通配主题,则将所述订阅主题以及所述发布主题拆分成预设数量的不同层级的子订阅主题和子发布主题;
在本实施例中,所述通配主题为包含单层通配符“+”或多层通配符“#”的主题,所述预设数量具体为4级,当然本领域技术人员也可以根据实际需要,设置不同数量的不同层级,例如3级、5级、6级等,其中,需采用约定分隔符“/”来对订阅主题以及发布主题进行拆分,所述子订阅主题为将订阅主题进行拆分后所得到的包含不同层级的子订阅主题,所述子发布主题为将发布主题进行拆分后得到的包含不同层级的子发布主题,例如,发布主题为aabbcc,进行拆分后,可得到第一级子发布主题为aa,第二级子发布主题为bb,第三级子发布主题为cc;例如,订阅主题为aa+bb,由于订阅主题为预存在订阅控制装置中,所以将订阅主题拆分后以树形结构存储,即将拆分后的订阅主题以根节点为起点,按照从高至低的顺序来排列为,第一级子订阅主题为aa,第二级子订阅主题为+,第三级子订阅主题为bb;或订阅主题为aa+cc,将拆分后的订阅主题以根节点为起点,按照从高至低的顺序来排列为,第一级子订阅主题为aa,第二级子订阅主题为+,第三级子订阅主题为cc;或订阅主题为aa#,将拆分后的订阅主题以根节点为起点,按照从高至低的顺序来排列为,第一级子订阅主题为aa,第二级子订阅主题为#。
步骤S15,将位于不同层级的子发布主题和子订阅主题依次进行匹配并获取与所述发布主题相对应的订阅客户端。
参照图5,在一实施例中,所述步骤S15还包括:
步骤S151,将所述不同层级的子订阅主题和子发布主题按照从高至低的顺序排列;
在本实施例中,将不同层级的子订阅主题以订阅树的形式,存储到订阅树上不同的节点,即每一个层级对应一个节点,例如,参照图6,其中订阅信息为:aa/+/bb,第一层级即为aa,第二层级即为+,第三层级即为bb,则对应的订阅客户端为客户端c;订阅信息为aa/+/cc,第一层级即为aa,第二层级即为+,第三层级即为cc,则对应的订阅客户端为d,需要说明的是单层通配符可代表“+”所在层级的任意子订阅主题;订阅信息为aa/#,第一层级即为aa,第二层级即为#,则对应的客户端为c、d,需要说明的是,多层通配符可代表“#”所在层级以及以下层级的任意子订阅主题。将所述订阅主题存储到以根节点为第一层级的订阅树上。
步骤S152,根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子发布主题;
在本实施例中,根据从高至低的排列顺序依次判断位于相同层级的子订阅主题和子发布主题是否相符,在图6的基础上,以发布主题为“aa/bb/cc”为例,匹配过程如下:
(1)从N0代表的根节点开始扫描,判断出N0只有一条线“aa”与第一层级的子发布主题匹配,则进入到N1节点;
(2)从N1节点再对第二层级子发布主题“bb”进行匹配,判断出订阅树中“bb”没有匹配的线,而“+”和“#”有匹配的线,而“#”所在层级对应的节点所对应的订阅客户端为订阅客户端A和订阅客户端B,并且“+”对应的层级的节点有N2,则进入N2节点;
(3)从N2节点再对第三层级子发布主题“cc”进行匹配,判断出第三层的子订阅主题只有“cc”一条线,而第三层子订阅节点的“cc”对应的订阅客户端为订阅客户端D;
(4)检匹配完成。
步骤S153,若所述同一层级的子订阅主题存储有与同一层级的子订阅主题相对应层级的子发布主题,则获取所述子订阅主题对应的层级的节点数据;
在本实施例中,所述节点数据包括子订阅主题对应的层级的所在节点对应的订阅客户端,由上述过程可知,发布主题“aa/bb/cc”对应的订阅客户端为订阅客户端A、B、D。
步骤S154,根据所述节点数据,判断下一层级的子订阅主题是否存储有与下一层级的子订阅主题相对应层级的子发布主题,直至将所有层级判断完成并获取每一个层级与发布主题相对应的订阅客户端。
在本发明中,通过将所述订阅主题以及所述发布主题拆分成预设数量的不同层级的子订阅主题和子发布主题,并将位于不同层级的子发布主题和子订阅主题依次进行匹配并获取与所述发布主题相对应的订阅客户端,可以准确的确定发布主题所对应的订阅客户端,并且能够大范围的根据发布主题的部分内容获取对发布主题感兴趣的订阅客户端,提高了消息发送的效率,降低了匹配难度。
进一步地,参照图7,在基于本发明的第一实施例所提出的本发明订阅方法,本发明提出第四实施例,所述步骤S20之后,还包括:
步骤S30,接受订阅客户端发送的待订阅主题,判断所述待定阅主题的主题类型;
当订阅客户端需要订阅除已订阅的主题之外的其他主题时,可发送待订阅主题至MQTT Broker,即本发明中的执行主体,并判断所述待订阅主题的主题类型,即精确主题或通配主题。
步骤S40,若所述主题类型为精确主题,则在所述哈希表中查找所述待订阅主题是否存在;
所述哈希表为通过存储有订阅客户端与发布主题之间的映射关系,而可以使发布主题直接发送到与发布主题相对应的订阅客户端的数据结构,其中同样存储有预存的并未与新增订阅客户端相关联的订阅主题。
步骤S50,若在所述哈希表中不存在所述待订阅主题,则增加所述待订阅主题并将所述待订阅主题与所述订阅客户端关联;
步骤S60,若在所述哈希表中存在有所述待订阅主题,则将所述待订阅主题与所述订阅客户端关联。
若在所述哈希表中未存在有新增的待订阅主题,则直接在哈希表中增加所述待订阅主题,并将所述待订阅主题与所述发出待订阅主题的订阅客户端相关联。若在所述哈希表中存在有新增的待订阅主题,则直接将待订阅主题与所述发出待订阅主题的订阅客户端相关联。
在本实施例中,通过接收订阅客户端发送的待订阅主题,判断所述待订阅主题的主题类型,并根据主题类型采用不同的方式将待订阅主题添加到哈希表中,可以实现用户根据订阅客户端新增自己感兴趣的主题,灵活改变订阅主题,使得用户有更多的选择。
进一步地,参照图8,在基于本发明的第一实施例所提出的本发明订阅方法,本发明提出第五实施例,所述步骤S30之后,还包括:
步骤S301,若所述主题类型为通配主题,则将所述待订阅主题和所述预存的订阅客户端的订阅主题拆分成预设数量的不同层级的子待订阅主题和子订阅主题;
在本实施例中,可通过判断待订阅主题中的通配符来判断所述主题类型,具体地,当待订阅主题中包含有多层通配符或单层通配符时,则可判定为所述待订阅主题为通配主题,反之,则判定所述主题为精确主题;所述子待订阅主题与所述子订阅主题如上述实施例中所述,在此,不再赘述;
步骤S302,将所述不同层级的子待订阅主题和子订阅主题按照从高至低的顺序排列;
步骤S303,根据排列顺序,判断所述同一层级的子待订阅主题是否存储有与同一层级的子待订阅主题,直至将所有层级判断完成;
步骤S304,若所述同一层级的子订阅主题没有存储有与同一层级的子订阅主题相对应层级的子待订阅主题,则将所述子待订阅主题添加到没有存储有同一层级的子订阅主题相对应的层级中;
步骤S305,将所述订阅客户端关联到与添加所述子待订阅主题的层级相对应的节点数据中。
在本实施例中,根据从高至低的排列顺序依次判断位于相同层级的子待订阅主题和子发布主题是否相符,参照图9,在图6的基础上,以待订阅主题为“aa/+/dd”,订阅客户端为客户端E为例,匹配过程如下:
(1)从N0代表的根节点开始扫描,判断出N0只有一条线“aa”与第一层级的子待订阅主题匹配,则进入到N1节点;
(2)从N1代表的第一层级订阅节点开始扫描,判断出N2节点有“+”可以第二层级的子待订阅主题匹配,则进入到N2节点;
(3)从N2代表的第二层级订阅节点开始扫描,判断出下一层级的子订阅主题并没有与“dd”相匹配的节点,则在N2节点下,建立第三层关于子待订阅主题“dd”节点N6,并关联“dd”线;
(4)将订阅客户端E关联到N6节点中,完成订阅。
在本实施例中,通过接收订阅客户端发送的待订阅主题,判断所述待订阅主题的主题类型为通配主题,并根据主题类型采用不同的方式将待订阅主题添加到哈希表中,可以实现用户根据订阅客户端新增自己感兴趣的主题,灵活改变订阅主题,使得用户有更多的选择。
进一步地,参照图10,在基于本发明的第一实施例所提出的本发明订阅方法,本发明提出第六实施例,所述步骤S305之后,还包括:
步骤S306,接收订阅客户端发送的待取消订阅主题,判断所述待取消订阅主题的类型;
当订阅客户端需要取消除已订阅的主题时,可发送待取消订阅主题至MQTTBroker,即本发明中的执行主体,并判断所述待取消订阅主题的主题类型,即精确主题或通配主题。
步骤S307,若所述待取消订阅主题的类型为精确主题,则在所述哈希表中查找所述待取消订阅主题是否存在;
步骤S308,若所述待取消订阅主题存在,则删除所述取消订阅主题以及所述待取消订阅主题与所述订阅客户端之间的关联。
若在所述哈希表中存在有待取消的已订阅主题,则直接在哈希表中删除所述待取消订阅主题,并将所述待取消订阅主题与所述发出待取消订阅主题的订阅客户端之间的关联关系删除。
在本实施例中,通过接收订阅客户端发送的取消订阅主题,判断所述待订阅主题的主题类型,并根据主题类型采用不同的方式将待取消订阅主题在哈希表中删除,可以实现用户根据订阅客户端取消自己不感兴趣的主题,灵活改变订阅主题,使得用户有更多的选择。
进一步地,在基于本发明的第一实施例所提出的本发明订阅方法,本发明提出第七实施例,所述步骤S306之后,还包括:
若所述待取消订阅主题的类型为通配主题,则将所述待取消订阅主题和所述预存的订阅客户端的订阅主题拆分成预设数量的不同层级的子待取消订阅主题和子订阅主题;
将所述不同层级的子待取消订阅主题和子订阅主题按照从高至低的顺序排列;
根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子待取消订阅主题,直至将所有层级判断完成;
若所述同一层级的子订阅主题存储有与同一层级的子订阅主题相对应层级的子待取消订阅主题,则删除与所述子待取消订阅主题对应层级相关联的订阅客户端;
根据预设顺序,依次判断与所述待取消订阅主题对应层级的子待取消订阅主题是否存储有与所述子待订阅主题相对应的节点数据;
在本实施例中,所述预设顺序为与取消子待取消主题的匹配过程中的相反顺序,所述节点数据具体为当前节点中对应的订阅客户端或者当前节点对应的层级的下一层级;在本步骤中,需要根据取消子待取消主题的相反顺序,依次判断对应的节点是否存储有与待取消订阅主题对应的节点数据,若有,则删除该节点;若没有,则还需判断该节点是否含有其他非待取消订阅主题对应的客户端或下一层级,若没有,则删除该节点;若有,则直接返回到根节点,完成取消订阅过程。
根据所述与所述子待订阅主题相对应的节点数据执行对应的操作。
在本实施例中,根据从高至低的排列顺序依次判断位于相同层级的子待订阅主题和子发布主题是否相符,参照图11,在图9的基础上,以待取消订阅主题为“aa/+/dd”,订阅客户端为客户端E为例,匹配过程如下:
(1)从N0代表的根节点开始扫描,判断出N0只有一条线“aa”与第一层级的子待订阅主题匹配,则进入到N1节点;
(2)从N1代表的第一层级订阅节点开始扫描,判断出N2节点有“+”可以第二层级的子待订阅主题匹配,则进入到N2节点;
(3)从N2代表的第二层级订阅节点开始扫描,判断出N6节点有“dd”与第三层子待取消订阅主题相匹配,则进入N6节点;
(4)在N6节点判断出有订阅客户端E相关联,则删除N6节点与订阅客户端的关联,并判断出N6节点不包含下一层级的节点或其他订阅客户端,返回上一层级的N2节点;
(5)删除N2节点中与第三层“dd”对应的N6节点的连线,判断出N2节点中存在下一层级的其他节点,则返回根节点N0;
(6)匹配完成。
在本发明中,通过接收订阅客户端发送的取消订阅主题,判断所述待订阅主题的主题类型,并根据主题类型采用不同的方式将待取消订阅主题在订阅树中删除,可以实现用户根据订阅客户端取消自己不感兴趣的主题,灵活改变订阅主题,使得用户有更多的选择。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序。所述计算机可读存储介质可以是图1的订阅控制装置中的存储器02,也可以是如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干信息用以使得订阅控制装置执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种订阅方法,其特征在于,所述订阅方法包括步骤:
接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端,所述订阅主题以哈希表形式和/或订阅树形式进行存储;
将所述发布主题发送至与所述发布主题相匹配的订阅客户端。
2.如权利要求1所述的订阅方法,其特征在于,所述订阅客户端的订阅主题与订阅客户端存在映射关系;所述接收发布客户端发布的发布主题,并与预存的订阅客户端的订阅主题进行匹配,得到与所述发布主题相匹配的订阅客户端的步骤包括:
接收发布客户端发布的发布主题,判断与所述发布主题相匹配的订阅主题,并获取所述订阅主题的主题类型;
若所述订阅主题为精确主题,则将所述发布主题与所述哈希表匹配并获取匹配结果;
根据所述映射关系和所述匹配结果,获取与所述发布主题相对应的订阅客户端。
3.如权利要求2所述的订阅方法,其特征在于,所述接收发布客户端发布的发布主题,判断与所述发布主题相匹配的订阅主题的步骤之后,包括:
若所述订阅主题为通配主题,则将所述订阅主题以及所述发布主题拆分成预设数量的不同层级的子订阅主题和子发布主题;
将位于不同层级的子发布主题和子订阅主题依次进行匹配并获取与所述发布主题相对应的订阅客户端。
4.如权利要求3所述的订阅方法,其特征在于,所述将位于不同层级的子发布主题和子订阅主题依次进行匹配并获取与所述发布主题相对应的订阅客户端的步骤包括:
将所述不同层级的子订阅主题和子发布主题按照从高至低的顺序排列;
根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子发布主题;
若所述同一层级的子订阅主题存储有与同一层级的子订阅主题相对应层级的子发布主题,则获取所述子订阅主题对应的层级的节点数据;
根据所述节点数据,判断下一层级的子订阅主题是否存储有与下一层级的子订阅主题相对应层级的子发布主题,直至将所有层级判断完成并获取每一个层级与发布主题相对应的订阅客户端。
5.如权利要求1所述的订阅方法,其特征在于,所述将所述发布主题发送至与所述发布主题相匹配的订阅客户端的步骤之后,还包括:
接收订阅客户端发送的待订阅主题,判断所述待订阅主题的主题类型;
若所述主题类型为精确主题,则在所述哈希表中查找所述待订阅主题是否存在;
若在所述哈希表中不存在所述待订阅主题,则增加所述待订阅主题并将所述待订阅主题与所述订阅客户端关联;
若在所述哈希表中存在有所述待订阅主题,则将所述待订阅主题与所述订阅客户端关联。
6.如权利要求5所述的订阅方法,其特征在于,所述接收订阅客户端发送的待订阅主题,判断所述待订阅主题的主题类型的步骤之后,还包括:
若所述主题类型为通配主题,则将所述待订阅主题和所述预存的订阅客户端的订阅主题拆分成预设数量的不同层级的子待订阅主题和子订阅主题;
将所述不同层级的子待订阅主题和子订阅主题按照从高至低的顺序排列;
根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子待订阅主题,直至将所有层级判断完成;
若所述同一层级的子订阅主题没有存储有与同一层级的子订阅主题相对应层级的子待订阅主题,则将所述子待订阅主题添加到没有存储有同一层级的子订阅主题相对应的层级中;
将所述订阅客户端关联到与添加所述子待订阅主题的层级相对应的节点数据中。
7.如权利要求6所述的订阅方法,其特征在于,所述将所述订阅客户端关联到与添加所述子待订阅主题的层级相对应的节点数据中的步骤之后,还包括:
接收订阅客户端发送的待取消订阅主题,判断所述待取消订阅主题的类型;
若所述待取消订阅主题的类型为精确主题,则在所述哈希表中查找所述待取消订阅主题是否存在;
若所述待取消订阅主题存在,则删除所述取消订阅主题以及所述待取消订阅主题与所述订阅客户端之间的关联。
8.如权利要求7所述的订阅方法,其特征在于,所述接收订阅客户端发送的待取消订阅主题,判断所述待取消订阅主题的类型的步骤之后,还包括:
若所述待取消订阅主题的类型为通配主题,则将所述待取消订阅主题和所述预存的订阅客户端的订阅主题拆分成预设数量的不同层级的子待取消订阅主题和子订阅主题;
将所述不同层级的子待取消订阅主题和子订阅主题按照从高至低的顺序排列;
根据排列顺序,判断所述同一层级的子订阅主题是否存储有与同一层级的子订阅主题相对应层级的子待取消订阅主题,直至将所有层级判断完成;
若所述同一层级的子订阅主题存储有与同一层级的子订阅主题相对应层级的子待取消订阅主题,则删除与所述子待取消订阅主题对应层级相关联的订阅客户端;
根据预设顺序,依次判断与所述子待取消订阅主题对应层级的子订阅主题是否存储有与所述子待订阅主题相对应的节点数据;
根据所述与所述子待订阅主题相对应的节点数据执行对应的操作。
9.一种订阅控制装置,其特征在于,所述订阅控制装置包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8中任一项所述的订阅方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的订阅方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110899907.6A CN113783838B (zh) | 2021-08-05 | 2021-08-05 | 一种订阅方法、订阅控制装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110899907.6A CN113783838B (zh) | 2021-08-05 | 2021-08-05 | 一种订阅方法、订阅控制装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113783838A true CN113783838A (zh) | 2021-12-10 |
CN113783838B CN113783838B (zh) | 2024-02-06 |
Family
ID=78836817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110899907.6A Active CN113783838B (zh) | 2021-08-05 | 2021-08-05 | 一种订阅方法、订阅控制装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113783838B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115567584A (zh) * | 2022-09-21 | 2023-01-03 | 北京百度网讯科技有限公司 | 订阅主题的处理方法、装置、电子设备及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003083703A1 (en) * | 2002-03-28 | 2003-10-09 | Precache, Inc. | Method and apparatus for reliable and efficient content-based routing and query and response in a publish-subscribe network |
US20100306264A1 (en) * | 2009-06-02 | 2010-12-02 | International Business Machines Corporation | Optimizing publish/subscribe matching for non-wildcarded topics |
CN106130882A (zh) * | 2016-07-13 | 2016-11-16 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN109428922A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
CN109862063A (zh) * | 2018-11-12 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于mqtt的发布订阅匹配方法、装置及存储介质 |
CN110557423A (zh) * | 2018-06-04 | 2019-12-10 | 珠海全志科技股份有限公司 | 一种消息推送方法及系统 |
CN111600936A (zh) * | 2020-04-24 | 2020-08-28 | 国电南瑞科技股份有限公司 | 一种适用于泛在电力物联网边缘终端的基于多容器的非对称处理系统 |
CN111651476A (zh) * | 2020-05-18 | 2020-09-11 | 青岛海洋科学与技术国家实验室发展中心 | 一种物联网关中mqtt主题的快速匹配方法及系统 |
-
2021
- 2021-08-05 CN CN202110899907.6A patent/CN113783838B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003083703A1 (en) * | 2002-03-28 | 2003-10-09 | Precache, Inc. | Method and apparatus for reliable and efficient content-based routing and query and response in a publish-subscribe network |
US20100306264A1 (en) * | 2009-06-02 | 2010-12-02 | International Business Machines Corporation | Optimizing publish/subscribe matching for non-wildcarded topics |
CN106130882A (zh) * | 2016-07-13 | 2016-11-16 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN109428922A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
US20200195740A1 (en) * | 2017-08-29 | 2020-06-18 | Huawei Technologies Co., Ltd. | Subscribe and publish method and server |
CN112039942A (zh) * | 2017-08-29 | 2020-12-04 | 华为技术有限公司 | 一种订阅发布方法及服务器 |
CN110557423A (zh) * | 2018-06-04 | 2019-12-10 | 珠海全志科技股份有限公司 | 一种消息推送方法及系统 |
CN109862063A (zh) * | 2018-11-12 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于mqtt的发布订阅匹配方法、装置及存储介质 |
CN111600936A (zh) * | 2020-04-24 | 2020-08-28 | 国电南瑞科技股份有限公司 | 一种适用于泛在电力物联网边缘终端的基于多容器的非对称处理系统 |
CN111651476A (zh) * | 2020-05-18 | 2020-09-11 | 青岛海洋科学与技术国家实验室发展中心 | 一种物联网关中mqtt主题的快速匹配方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115567584A (zh) * | 2022-09-21 | 2023-01-03 | 北京百度网讯科技有限公司 | 订阅主题的处理方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113783838B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7606808B2 (en) | Maintaining and establishing subscriptions with load-balanced servers | |
EP1447765B1 (en) | Method, apparatus, and user interface for managing electronic mail and alert messages | |
US6779022B1 (en) | Server that obtains information from multiple sources, filters using client identities, and dispatches to both hardwired and wireless clients | |
RU2523165C2 (ru) | Технологии автоматического диалога | |
US7716263B2 (en) | Scalable method and system for providing real time indications of currently open documents | |
US7793260B2 (en) | System for defining and activating pluggable user interface components for a deployed application | |
EP2073429A1 (en) | Data synchronous method, system and apparatus | |
EP2283634B1 (en) | Method and device for access to a directory | |
US11222045B2 (en) | Network-based processing of data requests for contact information | |
US20130117383A1 (en) | System and method for insertion of addresses in electronic messages | |
KR101467716B1 (ko) | 발행된 메시지를 분배하는 방법 및 장치 | |
US20170075944A1 (en) | Systems and Methods For Socializing Machines Using Autonomous Software Agents | |
CN110535928A (zh) | 一种区块链的java智能合约的事件推送方法 | |
CN114090388A (zh) | 信息获取方法、服务器集群、服务器及设备 | |
CN113783838A (zh) | 一种订阅方法、订阅控制装置及计算机可读存储介质 | |
CN114519082A (zh) | 一种数据处理方法和相关装置 | |
CN116932614B (zh) | 一种面向数联网的分布式搜索方法及系统 | |
US20080209523A1 (en) | Sharing data over trusted networks | |
CN117390020A (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN112448883A (zh) | 消息推送方法、装置、计算机设备和存储介质 | |
US20140324816A1 (en) | Extended web search infrastructure supporting hosting client device status | |
US8499007B2 (en) | Information processing system, first information processing apparatus, second information processing apparatus, and third information processing apparatus | |
CN111563069B (zh) | 一种工控设备的探针配置方法和系统 | |
US20120016900A1 (en) | Identification of third party pim repositories storing a user's contact information | |
CN116910125B (zh) | 融合距离和最长前缀的数字对象分布式搜索方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |