CN115567584A - 订阅主题的处理方法、装置、电子设备及可读存储介质 - Google Patents
订阅主题的处理方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115567584A CN115567584A CN202211152514.XA CN202211152514A CN115567584A CN 115567584 A CN115567584 A CN 115567584A CN 202211152514 A CN202211152514 A CN 202211152514A CN 115567584 A CN115567584 A CN 115567584A
- Authority
- CN
- China
- Prior art keywords
- topic
- wildcard
- level
- theme
- filter
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供了订阅主题的处理方法、装置、电子设备及可读存储介质,涉及计算机和通信领域,尤其涉及物联网领域。具体实现方案为:响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
Description
技术领域
本公开涉及计算机和通信技术领域,尤其涉及物联网技术领域,具体而言,本公开涉及一种订阅主题的处理方法、装置、电子设备及可读存储介质。
背景技术
消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议是基于发布/订阅模式的通信协议,被广泛应用于物联网(Internet of Things,IoT)领域。
MQTT协议支持保留消息机制。当MQTT服务端接收到保留消息时,会将保留消息存储。MQTT客户端接入后会发送订阅请求,订阅请求会携带有主题过滤器(topic filter),MQTT服务端会根据主题过滤器筛选出该MQTT客户端的订阅主题,而后将这些订阅主题对应的保留消息推送给该MQTT客户端。
MQTT客户端可能会一次订阅多个主题,这就需要在主题过滤器中引入通配符,而在主题过滤器中引入了通配符的情况下,如何根据主题过滤器有效筛选出MQTT客户端的订阅主题,成为了一个重要的技术问题。
发明内容
本公开为了解决上述缺陷中的至少一项,提供了一种订阅主题的处理方法、装置、电子设备及可读存储介质。
根据本公开的第一方面,提供了一种订阅主题的处理方法,该方法包括:
响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;
依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;
基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;
基于第一主题集确定订阅端所订阅的目标主题。
根据本公开的第二方面,提供了一种订阅主题的处理装置,该装置包括:
主题过滤器获取模块,用于响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;
第一通配符确定模块,用于依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;
第一主题集确定模块,用于基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;
订阅主题确定模块,用于基于第一主题集确定订阅端所订阅的目标主题。
根据本公开的第三方面,提供了一种电子设备,该电子设备包括:
至少一个处理器;以及
与上述至少一个处理器通信连接的存储器;其中,
存储器存储有可被上述至少一个处理器执行的指令,指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行上述订阅主题的处理方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使计算机执行上述订阅主题的处理方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现上述订阅主题的处理方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开实施例提供的一种发布-订阅系统的结构示意图;
图2是本公开实施例提供的一种订阅主题的处理方法的流程示意图;
图3是本公开实施例提供的另一种订阅主题的处理方法的流程示意图;
图4是本公开实施例提供的一种订阅主题的处理装置的结构示意图;
图5是本公开实施例提供的另一种订阅主题的处理装置的结构示意图;
图6是用来实现本公开实施例的订阅主题的处理方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
首先对本申请涉及的几个名词进行介绍和解释:
消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议是基于发布/订阅模式的通信协议,被广泛应用于物联网(Internet of Things,IoT)领域。
保留消息(Retained Messages),是一条MQTT消息,其保留标志被设置为真(true)。MQTT客户端会在订阅主题后接收到该主题关联的保留消息。
主题过滤器(topic filter),是MQTT客户端在进行主题订阅时的主题名,通过主题过滤器可以筛选出MQTT客户端的订阅主题。
通配符,是用于替换主题过滤器中指定层级的符号。通配符包括单层通配符以及多层通配符。
单层通配符一般通过"+"表示,用于占据主题过滤器中的单个主题层级,主题过滤器的任意主题层级都可以使用单层通配符。主题过滤器可以包括多个单层通配符。
多层通配符一般通过"#"表示,用于占据主题过滤器中的多个主题层级。多层通配符必须是最后一个字符,且前面没有字符或者前面为主题层级分隔符。
本公开实施例中提供的方案不仅适用于MQTT协议,同样适用于与MQTT协议中规定的主题过滤器中通配符的使用规则相一致的其他通信协议,例如,网络地址转换协议(Network Address Trans lations,NATS)。
图1中示出了本公开实施例中提供的一种发布-订阅系统的结构示意图。如图1中所示,该发布-订阅系统包括多个MQTT服务端,多个MQTT客户端,保留消息服务130以及保留消息库140。
其中,MQTT客户端110作为保留信息的发布端,MQTT客户端110可以发送保留信息至MQTT服务端120,MQTT服务端120接收MQTT客户端110发送的保留信息,并将保留信息推送至保留消息服务130。保留消息服务130可以在接收到MQTT服务端120推送的保留消息后,将保留消息写入至保留消息库140。
MQTT客户端160作为保留信息的订阅端,MQTT客户端160可以向MQTT服务端150提交订阅请求,MQTT服务端150在接收到MQTT客户端160提交的订阅请求后,筛选出MQTT客户端160所订阅的主题,并向保留信息服务发送对MQTT客户端160所订阅的主题关联的保留消息的获取请求。
保留消息服务130可以在接收到MQTT服务端150发送的获取请求后,从保留消息库140中读取MQTT客户端160所订阅的主题关联的保留消息,并将其返回给MQTT服务端150。MQTT服务端150在接收到保留消息服务130返回的保留消息后,将该保留消息发送给MQTT客户端160。
图2示出了本公开实施例提供的一种订阅主题的处理方法的流程示意图,如图2中所示,该方法主要可以包括:
步骤S210:响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器。
其中,订阅端可以为MQTT客户端,订阅端可以在接入发布-订阅系统后,向MQTT服务端发送订阅请求,订阅请求中携带有主题过滤器,MQTT服务端根据主题过滤器筛选出订阅端所订阅的目标主题。
主题过滤器中可以包含多个主题层级,各主题层级之间可以通过主题层级分隔符进行分搁,一般而言,主题层级分隔符为“/”。
步骤S220:依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符。
其中,主题过滤器中可以包含一个或者多个通配符。通配符用于占据主题过滤器中的一个或者多个主题层级。
第一通配符为依照主题过滤器中的主题层级顺序,查找到的与主题过滤器的根主题层级最临近的通配符。
作为一个示例,主题过滤器为“device/status/+/car/#”,其中,主题过滤器的根主题层级对应的主题层级标识为“device”,从根主题层级依照主题过滤器中的主题层级顺序进行查找,可以将最先查找到的通配符“+”作为第一通配符。
步骤S230:基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集。
步骤S240:基于第一主题集确定订阅端所订阅的目标主题。
其中,第一通配符的通配符类型可以为单层通配符或者多层通配符。单层通配符用于占据主题过滤器中任意的单个主题层级,一般通过"+"表示。主题过滤器可以包括多个单层通配符。多层通配符用于占据主题过滤器中的多个主题层级。多层通配符一般通过"#"表示,多层通配符必须是最后一个字符,且前面没有字符或者前面为主题层级分隔符。
由于单层通配符与多层通配符在使用时的不同特性,可以针对单层通配符与多层通配符分别配置不同的主题筛选方式。
本公开实施例中,MQTT服务端可以将已存储的保留消息所对应的主题进行汇总,构建初始主题集。
在查找到第一通配符后,可以根据第一通配符的通配符类型确定对应的主题筛选方式,而后基于该主题筛选方式筛选出第一通配符所占据的主题层级下的第一主题集。
由于第一通配符为与主题过滤器的根主题层级最为临近的通配符,如主题过滤器中除了第一通配符之外还存在其他通配符,该其他通配符所占据的主题层级也低于第一通配符所占据的主题层级,该其他通配符所占据的主题层级下的主题也在第一主题集之内。因此,可以基于第一主题集确定订阅端所订阅的目标主题。
作为一个示例,主题过滤器为“device/status/+/car/#”,将“device”对应的主题层级记做根主题层级,将“status”对应的主题层级记做第一子主题层级,将“+”对应的主题层级记做第二子主题层级,将“car”对应的主题层级记做第三子主题层级,将“#”对应的主题层级记做第四子主题层级。第一通配符为“+”,第一主题集即为初始主题集中在第三子主题层级下的主题,初始主题集中通配符“#”所占据的第四子主题层级下的主题属于第一主题集内。
本公开实施例中,在针对包含通配符的主题过滤器进行主题筛选时,可以先查找出主题过滤器中最临近根主题层级的第一通配符,从初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集,进而从第一主题集中确定订阅端所订阅的目标主题。
本公开实施例提供的方法,通过响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
本公开实施例中,在主题过滤器中包含通配符时,先查找出主题过滤器中最临近根主题层级的第一通配符,从初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集,以从第一主题集中确定订阅端所订阅的目标主题。由于筛选出的第一主题集相较于初始主题集的中包含的主题数量较少,从第一主题集中筛选出订阅端所订阅的目标主题,相较于直接从初始主题集中筛选出订阅端所订阅的目标主题,其所筛选的主题数量较少,使得对主题的筛选操作更为快速,也更为节省算力。
本公开的一种可选方式中,基于第一主题集确定订阅端所订阅的目标主题,包括:
响应于第一通配符为多层通配符,或者,主题过滤器中在第一通配符之后不存在其他通配符,将第一主题集确定为订阅端所订阅的目标主题。
本公开实施例中,多层通配符是主题过滤器中的最后一个字符,因此,在第一通配符为多层通配符时,可以认为该主题过滤器中仅包含一个多层通配符,可以将该多层通配符所占据的主题层级下的第一主题集确定为订阅端所订阅的目标主题。
例如,主题过滤器为“device/status/car/#”,该主题过滤器中的第一通配符为“#”,即该主题过滤器的最后一个字符为多层通配符。
本公开实施例中,主题过滤器中可能仅包括一个单层通配符(即第一通配符),而不包含其他的通配符,这时可以将该单层通配符所占据的主题层级下的第一主题集确定为订阅端所订阅的目标主题。
例如,主题过滤器为“device/status/+/car/”,该主题过滤器中的第一通配符为“+”,该主题过滤器中仅包含一个单层通配符。
本公开的一种可选方式中,基于第一主题集确定订阅端所订阅的目标主题,包括:
响应于第一通配符为单层通配符,依照主题过滤器中的主题层级顺序,从主题过滤器中第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符;
基于与第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出第二通配符所占据的主题层级下的第二主题集;
响应于第二通配符为多层通配符,或者,主题过滤器中在第二通配符之后不存在其他通配符,将第二主题集确定为订阅端所订阅的目标主题;
响应于第二通配符为单层通配符,将第二通配符作为第一通配符,并将第二主题集作为第一主题集,重复执行依照主题过滤器中的主题层级顺序,从主题过滤器中第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符,基于与第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出第二通配符所占据的主题层级下的第二主题集的步骤,直至第二通配符为多层通配符,或者,主题过滤器中在第二通配符之后不存在其他通配符,将第二主题集确定为订阅端所订阅的目标主题。
本公开实施例中,在第一通配符为单层通配符,且主题过滤器中在第一通配符之后还存在其他通配符时,可以依照主题过滤器中的主题层级顺序,在主题过滤器中查找出在第一通配符之后,且与第一通配符最邻近的其他通配符,将最先查找出的该通配符记做第二通配符。
第二通配符的通配符类型可以为单层通配符或者多层通配符,可以根据第二通配符的通配符类型对应的主题筛选方式,从第一主题集中筛选出第二通配符所占据的主题层级下的第二主题集。
第二通配符为多层通配符时,第二通配符即为主题过滤器中的最后一个字符,这时可以停止继续查找第二通配符之后的通配符的步骤,而直接将第二主题集确定为订阅端所订阅的目标主题。
例如,主题过滤器为“device/status/+/car/#”,该主题过滤器中的第二通配符为多层通配符“#”。
第二通配符为单层通配符,且主题过滤器中在第二通配符之后不存在其他通配符时,这时可以停止继续查找第二通配符之后的通配符的步骤,而直接将第二主题集确定为订阅端所订阅的目标主题。
例如,主题过滤器为“device/status/+/car/+”,该主题过滤器中的第二通配符为单层通配符“+”。
第二通配符为单层通配符,并且主题过滤器中在第二通配符之后存在其他通配符时,例如,主题过滤器为“device/status/+/car/+/aa/#”,该主题过滤器中的第二通配符为单层通配符“+”,且该主题过滤器在第二通配符之后还存在其他字符。这时可以将第二通配符作为第一通配符,并将第二主题集作为第一主题集,重复执行上述依照主题过滤器中的主题层级顺序,从主题过滤器中第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符,基于与第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出第二通配符所占据的主题层级下的第二主题集的步骤,直至第二通配符为多层通配符,或者,主题过滤器中在第二通配符之后不存在其他通配符,将第二主题集确定为订阅端所订阅的目标主题。
通过重复执行上述查找下一个通配符,并确定查找出的通配符所占据主题层级下的主题集的操作,能够查找到主题过滤器中所有的通配符,并对从初始主题集开始,依次筛选出各通配符所占据主题层级下的主题集,直至最终筛选出订阅端所订阅的目标主题。
本公开实施例提供的方法,能够遍历到主题过滤器中所有的通配符,并能够从初始主题集中依次筛选出各通配符所占据主题层级下的主题集,直至最终筛选出订阅端所订阅的目标主题,相较于直接从初始主题集中筛选出订阅端所订阅的目标主题,其所筛选的主题数量较少,使得对主题的筛选操作更为快速,也更为节省算力。
本公开的一种可选方式中,基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集,包括:
从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题,第一主题层级为主题过滤器中第一通配符所占据的主题层级的父层级,第一主题层级标识为主题过滤器中第一主题层级的层级标识;
响应于第一通配符为单层通配符,从候选主题中确定第二主题层级的层级标识与第二主题层级标识相匹配的第一主题集,第二主题层级为主题过滤器中第一通配符所占据的主题层级的子层级,第二主题层级标识为主题过滤器中第二主题层级的层级标识;
响应于第一通配符为多层通配符,将候选主题确定为第一通配符所占据的主题层级下的第一主题集。
本公开实施例中,可以将主题过滤器中第一通配符所占据的主题层级的父层级记做第一主题层级,将主题过滤器中第一主题层级的层级标识记做第一主题层级标识。
将初始主题集中的各主题在第一主题层级的层级标识与第一主题层级的标识进行匹配,匹配出候选主题。候选主题在第一主题层级的层级标识与第一主题层级标识相匹配,即候选主题在第一主题层级的层级标识与第一主题层级标识相同。
例如,主题过滤器为“device/+/car/”,该主题过滤器中的第一通配符为单层通配符“+”,第一主题层级的层级标识为“device”,在初始主题集中匹配出第一主题层级的层级标识为“device”的所有主题作为候选主题。
本公开实施例中,第一通配符可以为单层通配符或是多层通配符,其所占据的主题层级下的第一主题集均在候选主题之内。
针对第一通配符为单层通配符时,可以将主题过滤器中第一通配符所占据的主题层级的子层级记做第二主题层级,将主题过滤器中第二主题层级的层级标识记做第二主题层级标识。
候选主题中第二主题层级的层级标识与第二主题层级标识相匹配的主题,即为第一通配符所占据的主题层级下的第一主题集。
因此,可以将各候选主题在第二主题层级的层级标识与第二主题层级的标识进行匹配,匹配出第一主题集。第一主题集中各主题在第二主题层级的层级标识与第二主题层级标识相匹配,即第一主题集中各主题在第二主题层级的层级标识与第二主题层级标识相同。
例如,主题过滤器为“device/+/car/”,该主题过滤器中的第一通配符为单层通配符“+”,第二主题层级的层级标识为“car”,在候选主题中匹配出第二主题层级的层级标识为“car”的所有主题作为第一主题集。
针对第一通配符为多层通配符时,其为主题过滤器中的最后一个字符,因此可以无需对候选主题进行进一步筛选,直接将候选主题确定为第一通配符所占据的主题层级下的第一主题集。
本公开实施例中,基于与第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出第二通配符所占据的主题层级下的第二主题集的具体原理,可以参照与从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集的原理。
具体而言,可以从第一主题集中确定第三主题层级的层级标识与第三主题层级标识相匹配的第二候选主题,第三主题层级为主题过滤器中第二通配符所占据的主题层级的父层级,第三主题层级标识为主题过滤器中第三主题层级的层级标识;
响应于第二通配符为单层通配符,从第二候选主题中确定第四主题层级的层级标识与第四主题层级标识相匹配的第二主题集,第四主题层级为主题过滤器中第二通配符所占据的主题层级的子层级,第四主题层级标识为主题过滤器中第四主题层级的层级标识;
响应于第二通配符为多层通配符,将第二候选主题确定为第二通配符所占据的主题层级下的第二主题集。
本公开的一种可选方式中,初始主题集中各主题依照对应主题标识的字母顺序排列,从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题,包括:
从预置的初始主题集中查找出第一主题层级的层级标识与第一主题层级标识相匹配的第一个主题;
由第一个主题起,依照初始主题集中主题的排列顺序进行依次查找,直至查找到第一主题层级的层级标识与第一主题层级标识相匹配的最后一个主题;
将第一个主题、最后一个主题以及初始主题集中位于第一个主题与最后一个主题之间的所有的主题确定为与第一主题层级标识相匹配的候选主题。
本公开实施例中,初始主题集中各主题依照对应主题标识的字母顺序排列,即根据各主题标识中包含字母,依照字母顺序对各主题进行排序。本例中的字母顺序即26个英文字母的排序。
本公开实施例中,由于初始主题集中各主题依照对应主题标识的字母顺序排列,可以从初始主题集中先查找出第一主题层级的层级标识与第一主题层级标识相匹配的第一个主题,而后由第一个主题起,依照初始主题集中主题的排列顺序进行依次查找,直至查找到第一主题层级的层级标识与第一主题层级标识相匹配的最后一个主题,此时,可以认为已经查找出了所有的候选主题,并可以将第一个主题、最后一个主题以及初始主题集中位于第一个主题与最后一个主题之间的所有的主题确定为与第一主题层级标识相匹配的候选主题。
通过上述主题查找方式,能够实现对主题的快速查找。
本公开的一种可选实施方式中,在基于第一主题集确定订阅端所订阅的目标主题之后,上述方法还包括:
从预置的保留消息库内存储的保留消息中确定与目标主题相关联的目标保留消息,并将目标保留消息返回至订阅端。
本公开实施例中,MQTT服务端可以将保留消息存储于保留消息库中,在确定出订阅端所订阅的目标主题后,可以从保留消息库查找出目标主题相关联的目标保留消息,并返回给订阅端。
本公开的一种可选方式中,保留消息库是基于保留消息以及保留消息对应的键值构建的,键值包括保留消息关联的主题标识,从预置的保留消息库中确定与目标主题相关联的目标保留消息,包括:
从保留消息库中存储的键值中确定目标键值,目标键值包含目标主题的主题标识;
基于目标键值从保留消息库中查找出与目标主题相关联的目标保留消息。
本公开实施例中,可以在接收到保留消息后,生成该保留消息对应的键值,由保留消息与键值组成键值对,并存储至保留消息库中。
具体而言,可以基于预定的组装方式,并根据保留消息相关联的主题标识,组装出键值。
在从保留消息库中查找与目标主题相关联的目标保留消息时,可以从所有的键值中查找出包含目标主题的主题标识的目标键值,而后将该目标键值对应的保留消息作为与目标主题相关联的目标保留消息。
作为一个示例,保留消息库中的各保留消息可以依照键值的字母顺序进行排序。由于目标主题是从初始主题集中匹配出来的,使得目标主题也会依照主题标识的字母顺序排序,因此可以确定出目标主题中的第一个主题以及目标主题中的最后一个主题,而后根据该第一个主题组装出第一键值,根据该最后一个主题组装出第二键值。由第一键值以及第二键值构建键值区间,该键值区间对应的保留消息即为目标主题相关联的目标保留消息所在,因此可以根据该键值区间从保留消息库中快速查找出与目标主题相关联的目标保留消息。
本公开实施例中,对于主题过滤器中不包含通配符的情况,可以在接收到保留消息后,根据保留消息所关联主题的主题标识组合出键值。根据该键值在保留消息库中进行查表操作,得到相应的保留信息并返回给订阅端。
根据MQTT协议中的规定,保留消息库中只能存储对应于每个主题一条保留消息。本公开实施例中还可以支持对保留消息的更新机制。具体而言,MQTT客户端在接收到保留消息后,会根据保留消息所关联主题的主题标识组合出键值。这时如果该保留消息的消息体不为空,可以根据该键值从保留信息库中查找出相应的键值对并更新。
本公开实施例中还支持对保留消息的删除机制。具体而言,MQTT客户端在接收到保留消息后,会根据保留消息所关联主题的主题标识组合出键值。这时如果该保留消息的消息体为空,可以根据对应的键值从保留信息库中查找出相应的键值对并删除。
本公开的一种可选方式中,初始主题集中的主题被划分至至少一个主题组内,主题组满足以下至少一项:
主题组内的被订阅主题的数量不大于第一预设值;
与主题组内包含的主题相关联的保留消息的数量不大于第二预设值;
对与主题组内包含的主题相关联的保留消息的读取频率不大于第三预设值;
对与主题组内包含的主题相关联的保留消息的写入频率不大于第四预设值;
对与主题组内包含的主题相关联的保留消息的删除频率不大于第五预设值。
本公开实施例中,可以主题进行分组,将初始主题集中的主题被划分至至少一个主题组,实现对不同主题组之间的主题的隔离。
主题组可以根据实际的业务需求进行划分,作为一个示例,主题组可以与用户相对应,使得不同用户所发布的主题能够相互隔离。
本公开实施例中,可以以主题组为粒度,对针对主题组内主题的相关业务进行控制。
作为一个示例,可以以主题组为粒度,对主题组内的被订阅主题的数量进行限制,使其不大于第一预设值。
在订阅端的主题过滤器中包含多层通配符时,其所订阅的主题数量可众多,这使会使得向订阅端发布消息的消息量巨大,造成处理压力。通过对主题组内的被订阅主题的数量进行限制使其不大于第一预设值,避免订阅端出现订阅的主题数量过多的情况,避免造成处理压力。
作为一个示例,可以以主题组为粒度,对主题组内包含的主题相关联的保留消息的数量进行限制,使其不大于第二预设值,以避免针对单个主题组在保留消息库中存储了过多的保留消息,造成内存压力。
作为一个示例,可以以主题组为粒度,对与主题组内包含的主题相关联的保留消息的读取、写入、删除等操作的频率进行限制,使得该读取频率不大于第三预设值、该写入频率不大于第四预设值、该删除频率不大于第五预设值,以避免对单个主题组内保留信息的频繁操作,造成处理压力。
本公开实施例中,第一预设值、第二预设值、第三预设值、第四预设值以及第五预设值的数值大小可以根据实际业务需要进行配置。
图3示出了本公开实施例提供的另一种订阅主题的处理方法的流程示意图,如图3中所示,该方法主要可以包括:
步骤S310:响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器。
其中,订阅端可以为MQTT客户端,订阅端可以在接入发布-订阅系统后,向MQTT服务端发送订阅请求,订阅请求中携带有主题过滤器,MQTT服务端根据主题过滤器筛选出订阅端所订阅的目标主题。
主题过滤器中可以包含多个主题层级,各主题层级之间可以通过主题层级分隔符进行分搁,一般而言,主题层级分隔符为“/”。
步骤S320:依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符。
其中,主题过滤器中可以包含一个或者多个通配符。通配符用于占据主题过滤器中的一个或者多个主题层级。
第一通配符为依照主题过滤器中的主题层级顺序,查找到的与主题过滤器的根主题层级最临近的通配符。
作为一个示例,主题过滤器为“device/status/+/car/#”,其中,主题过滤器的根主题层级对应的主题层级标识为“device”,从根主题层级依照主题过滤器中的主题层级顺序进行查找,可以将最先查找到的通配符“+”作为第一通配符。
步骤S330:基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集。
步骤S340:基于第一主题集确定订阅端所订阅的目标主题。
步骤S350:在基于第一主题集确定订阅端所订阅的目标主题之后,从预置的保留消息库内存储的保留消息中确定与目标主题相关联的目标保留消息,并将目标保留消息返回至订阅端。
其中,第一通配符的通配符类型可以为单层通配符或者多层通配符。单层通配符用于占据主题过滤器中任意的单个主题层级,一般通过"+"表示。主题过滤器可以包括多个单层通配符。多层通配符用于占据主题过滤器中的多个主题层级。多层通配符一般通过"#"表示,多层通配符必须是最后一个字符,且前面没有字符或者前面为主题层级分隔符。
由于单层通配符与多层通配符在使用时的不同特性,可以针对单层通配符与多层通配符分别配置不同的主题筛选方式。
本公开实施例中,MQTT服务端可以将已存储的保留消息所对应的主题进行汇总,构建初始主题集。
在查找到第一通配符后,可以根据第一通配符的通配符类型确定对应的主题筛选方式,而后基于该主题筛选方式筛选出第一通配符所占据的主题层级下的第一主题集。
由于第一通配符为与主题过滤器的根主题层级最为临近的通配符,如主题过滤器中除了第一通配符之外还存在其他通配符,该其他通配符所占据的主题层级也低于第一通配符所占据的主题层级,该其他通配符所占据的主题层级下的主题也在第一主题集之内。因此,可以基于第一主题集确定订阅端所订阅的目标主题。
作为一个示例,主题过滤器为“device/status/+/car/#”,将“device”对应的主题层级记做根主题层级,将“status”对应的主题层级记做第一子主题层级,将“+”对应的主题层级记做第二子主题层级,将“car”对应的主题层级记做第三子主题层级,将“#”对应的主题层级记做第四子主题层级。第一通配符为“+”,第一主题集即为初始主题集中在第三子主题层级下的主题,初始主题集中通配符“#”所占据的第四子主题层级下的主题属于第一主题集内。
本公开实施例中,在针对包含通配符的主题过滤器进行主题筛选时,可以先查找出主题过滤器中最临近根主题层级的第一通配符,从初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集,进而从第一主题集中确定订阅端所订阅的目标主题。
本公开实施例提供的方法,通过响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
本公开实施例中,在主题过滤器中包含通配符时,先查找出主题过滤器中最临近根主题层级的第一通配符,从初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集,以从第一主题集中确定订阅端所订阅的目标主题。由于筛选出的第一主题集相较于初始主题集的中包含的主题数量较少,从第一主题集中筛选出订阅端所订阅的目标主题,相较于直接从初始主题集中筛选出订阅端所订阅的目标主题,其所筛选的主题数量较少,使得对主题的筛选操作更为快速,也更为节省算力。
本公开实施例中,MQTT服务端可以将保留消息存储于保留消息库中,在确定出订阅端所订阅的目标主题后,可以从保留消息库查找出目标主题相关联的目标保留消息,并返回给订阅端。
基于与图2中所示的方法相同的原理,图4示出了本公开实施例提供的一种订阅主题的处理装置的结构示意图,如图4所示,该订阅主题的处理装置40可以包括:
主题过滤器获取模块410,用于响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;
第一通配符确定模块420,用于依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;
第一主题集确定模块430,用于基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;
订阅主题确定模块440,用于基于第一主题集确定订阅端所订阅的目标主题。
本公开实施例提供的装置,通过响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
可选地,订阅主题确定模块具体用于:
响应于第一通配符为多层通配符,或者,主题过滤器中在第一通配符之后不存在其他通配符,将第一主题集确定为订阅端所订阅的目标主题。
可选地,订阅主题确定模块具体用于:
响应于第一通配符为单层通配符,依照主题过滤器中的主题层级顺序,从主题过滤器中第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符;
基于与第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出第二通配符所占据的主题层级下的第二主题集;
响应于第二通配符为多层通配符,或者,主题过滤器中在第二通配符之后不存在其他通配符,将第二主题集确定为订阅端所订阅的目标主题;
响应于第二通配符为单层通配符,将第二通配符作为第一通配符,并将第二主题集作为第一主题集,重复执行依照主题过滤器中的主题层级顺序,从主题过滤器中第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符,基于与第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出第二通配符所占据的主题层级下的第二主题集的步骤,直至第二通配符为多层通配符,或者,主题过滤器中在第二通配符之后不存在其他通配符,将第二主题集确定为订阅端所订阅的目标主题。
可选地,第一主题集确定模块具体用于:
从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题,第一主题层级为主题过滤器中第一通配符所占据的主题层级的父层级,第一主题层级标识为主题过滤器中第一主题层级的层级标识;
响应于第一通配符为单层通配符,从候选主题中确定第二主题层级的层级标识与第二主题层级标识相匹配的第一主题集,第二主题层级为主题过滤器中第一通配符所占据的主题层级的子层级,第二主题层级标识为主题过滤器中第二主题层级的层级标识;
响应于第一通配符为多层通配符,将候选主题确定为第一通配符所占据的主题层级下的第一主题集。
可选地,初始主题集中各主题依照对应主题标识的字母顺序排列,第一主题集确定模块在从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题时,具体用于:
从预置的初始主题集中查找出第一主题层级的层级标识与第一主题层级标识相匹配的第一个主题;
由第一个主题起,依照初始主题集中主题的排列顺序进行依次查找,直至查找到第一主题层级的层级标识与第一主题层级标识相匹配的最后一个主题;
将第一个主题、最后一个主题以及初始主题集中位于第一个主题与最后一个主题之间的所有的主题确定为与第一主题层级标识相匹配的候选主题。
可选地,上述装置还包括:
目标保留消息返回模块,用于在基于第一主题集确定订阅端所订阅的目标主题之后,从预置的保留消息库内存储的保留消息中确定与目标主题相关联的目标保留消息,并将目标保留消息返回至订阅端。
可选地,保留消息库是基于保留消息以及保留消息对应的键值构建的,目标保留消息返回模块在从预置的保留消息库内存储的保留消息中确定与目标主题相关联的目标保留消息时,具体用于:
从保留消息库中存储的键值中确定目标键值,目标键值包含目标主题的主题标识;
基于目标键值从保留消息库中查找出与目标主题相关联的目标保留消息。
可选地,初始主题集中的主题被划分至至少一个主题组内,主题组满足以下至少一项:
主题组内的被订阅主题的数量不大于第一预设值;
与主题组内包含的主题相关联的保留消息的数量不大于第二预设值;
对与主题组内包含的主题相关联的保留消息的读取频率不大于第三预设值;
对与主题组内包含的主题相关联的保留消息的写入频率不大于第四预设值;
对与主题组内包含的主题相关联的保留消息的删除频率不大于第五预设值。
可以理解的是,本公开实施例中的订阅主题的处理装置的上述各模块具有实现图2中所示的实施例中的订阅主题的处理方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述订阅主题的处理装置的各模块的功能描述具体可以参见图2中所示实施例中的订阅主题的处理的对应描述,在此不再赘述。
基于与图3中所示的方法相同的原理,图5示出了本公开实施例提供的另一种订阅主题的处理装置的结构示意图,如图5所示,该订阅主题的处理装置50可以包括:
主题过滤器获取模块510,用于响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;
第一通配符确定模块520,用于依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;
第一主题集确定模块530,用于基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;
订阅主题确定模块540,用于基于第一主题集确定订阅端所订阅的目标主题;
目标保留消息返回模块550,用于在基于第一主题集确定订阅端所订阅的目标主题之后,从预置的保留消息库内存储的保留消息中确定与目标主题相关联的目标保留消息,并将目标保留消息返回至订阅端。
本公开实施例提供的装置,通过响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
可以理解的是,本公开实施例中的订阅主题的处理装置的上述各模块具有实现图3中所示的实施例中的订阅主题的处理方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述订阅主题的处理装置的各模块的功能描述具体可以参见图3中所示实施例中的订阅主题的处理的对应描述,在此不再赘述。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如本公开实施例提供的订阅主题的处理方法。
该电子设备与现有技术相比,通过响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
该可读存储介质为存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如本公开实施例提供的订阅主题的处理方法。
该可读存储介质与现有技术相比,通过响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
该计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如本公开实施例提供的订阅主题的处理方法。
该计算机程序产品与现有技术相比,通过响应于接收到订阅端发送的订阅请求,获取订阅请求中携带的主题过滤器;依照主题过滤器中的主题层级顺序,从主题过滤器的根主题层级起依次查找,直至查找到第一通配符;基于与第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出第一通配符所占据的主题层级下的第一主题集;基于第一主题集确定订阅端所订阅的目标主题。基于方案,能够在主题过滤器中包含通配符时,根据主题过滤器有效筛选出订阅端所订阅的主题,为后续向订阅端返回与订阅主题相关联的保留消息提供了基础。
图6示出了可以用来实施本公开的实施例的示例电子设备60的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,电子设备60包括计算单元610,其可以根据存储在只读存储器(ROM)620中的计算机程序或者从存储单元680加载到随机访问存储器(RAM)630中的计算机程序,来执行各种适当的动作和处理。在RAM630中,还可存储设备60操作所需的各种程序和数据。计算单元610、ROM620以及RAM 630通过总线640彼此相连。输入/输出(I/O)接口650也连接至总线640。
设备60中的多个部件连接至I/O接口650,包括:输入单元660,例如键盘、鼠标等;输出单元670,例如各种类型的显示器、扬声器等;存储单元680,例如磁盘、光盘等;以及通信单元690,例如网卡、调制解调器、无线通信收发机等。通信单元690允许设备60通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元610可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元610的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元610执行本公开实施例中所提供的订阅主题的处理方法。例如,在一些实施例中,执行本公开实施例中所提供的订阅主题的处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元680。在一些实施例中,计算机程序的部分或者全部可以经由ROM 620和/或通信单元690而被载入和/或安装到设备60上。当计算机程序加载到RAM 630并由计算单元610执行时,可以执行本公开实施例中所提供的订阅主题的处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元610可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行本公开实施例中所提供的订阅主题的处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (19)
1.一种订阅主题的处理方法,包括:
响应于接收到订阅端发送的订阅请求,获取所述订阅请求中携带的主题过滤器topicfilter;
依照所述主题过滤器中的主题层级顺序,从所述主题过滤器的根主题层级起依次查找,直至查找到第一通配符;
基于与所述第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出所述第一通配符所占据的主题层级下的第一主题集;
基于所述第一主题集确定所述订阅端所订阅的目标主题。
2.根据权利要求1所述的方法,其中,所述基于所述第一主题集确定所述订阅端所订阅的目标主题,包括:
响应于所述第一通配符为多层通配符,或者,所述主题过滤器中在所述第一通配符之后不存在其他通配符,将所述第一主题集确定为所述订阅端所订阅的目标主题。
3.根据权利要求1或2所述的方法,其中,所述基于所述第一主题集确定所述订阅端所订阅的目标主题,包括:
响应于第一通配符为单层通配符,依照所述主题过滤器中的主题层级顺序,从所述主题过滤器中所述第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符;
基于与所述第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出所述第二通配符所占据的主题层级下的第二主题集;
响应于所述第二通配符为多层通配符,或者,所述主题过滤器中在所述第二通配符之后不存在其他通配符,将所述第二主题集确定为所述订阅端所订阅的目标主题;
响应于所述第二通配符为单层通配符,将所述第二通配符作为所述第一通配符,并将所述第二主题集作为所述第一主题集,重复执行所述依照所述主题过滤器中的主题层级顺序,从所述主题过滤器中所述第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符,基于与所述第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出所述第二通配符所占据的主题层级下的第二主题集的步骤,直至所述第二通配符为多层通配符,或者,所述主题过滤器中在所述第二通配符之后不存在其他通配符,将所述第二主题集确定为所述订阅端所订阅的目标主题。
4.根据权利要求1-3中任一项所述的方法,其中,所述基于与所述第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出所述第一通配符所占据的主题层级下的第一主题集,包括:
从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题,所述第一主题层级为所述主题过滤器中所述第一通配符所占据的主题层级的父层级,所述第一主题层级标识为所述主题过滤器中所述第一主题层级的层级标识;
响应于所述第一通配符为单层通配符,从所述候选主题中确定第二主题层级的层级标识与第二主题层级标识相匹配的第一主题集,所述第二主题层级为所述主题过滤器中所述第一通配符所占据的主题层级的子层级,所述第二主题层级标识为所述主题过滤器中所述第二主题层级的层级标识;
响应于所述第一通配符为多层通配符,将所述候选主题确定为所述第一通配符所占据的主题层级下的第一主题集。
5.根据权利要求4所述的方法,其中,所述初始主题集中各主题依照对应主题标识的字母顺序排列,所述从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题,包括:
从预置的初始主题集中查找出第一主题层级的层级标识与第一主题层级标识相匹配的第一个主题;
由所述第一个主题起,依照所述初始主题集中主题的排列顺序进行依次查找,直至查找到第一主题层级的层级标识与第一主题层级标识相匹配的最后一个主题;
将所述第一个主题、所述最后一个主题以及所述初始主题集中位于所述第一个主题与所述最后一个主题之间的所有的主题确定为与第一主题层级标识相匹配的候选主题。
6.根据权利要求1-5中任一项所述的方法,在所述基于所述第一主题集确定所述订阅端所订阅的目标主题之后,所述方法还包括:
从预置的保留消息库内存储的保留消息中确定与所述目标主题相关联的目标保留消息,并将所述目标保留消息返回至所述订阅端。
7.根据权利要求6所述的方法,其中,所述保留消息库是基于所述保留消息以及所述保留消息对应的键值构建的,所述键值包括所述保留消息关联的主题标识,所述从预置的保留消息库中确定与所述目标主题相关联的目标保留消息,包括:
从所述保留消息库中存储的键值中确定目标键值,所述目标键值包含所述目标主题的主题标识;
基于所述目标键值从所述保留消息库中查找出与所述目标主题相关联的目标保留消息。
8.根据权利要求1-7中任一项所述的方法,其中,所述初始主题集中的主题被划分至至少一个主题组内,所述主题组满足以下至少一项:
所述主题组内的被订阅主题的数量不大于第一预设值;
与所述主题组内包含的主题相关联的保留消息的数量不大于第二预设值;
对与所述主题组内包含的主题相关联的保留消息的读取频率不大于第三预设值;
对与所述主题组内包含的主题相关联的保留消息的写入频率不大于第四预设值;
对与所述主题组内包含的主题相关联的保留消息的删除频率不大于第五预设值。
9.一种订阅主题的处理装置,包括:
主题过滤器获取模块,用于响应于接收到订阅端发送的订阅请求,获取所述订阅请求中携带的主题过滤器;
第一通配符确定模块,用于依照所述主题过滤器中的主题层级顺序,从所述主题过滤器的根主题层级起依次查找,直至查找到第一通配符;
第一主题集确定模块,用于基于与所述第一通配符的通配符类型对应的主题筛选方式,从预置的初始主题集中筛选出所述第一通配符所占据的主题层级下的第一主题集;
订阅主题确定模块,用于基于所述第一主题集确定所述订阅端所订阅的目标主题。
10.根据权利要求9所述的装置,其中,所述订阅主题确定模块具体用于:
响应于所述第一通配符为多层通配符,或者,所述主题过滤器中在所述第一通配符之后不存在其他通配符,将所述第一主题集确定为所述订阅端所订阅的目标主题。
11.根据权利要求9或10所述的装置,其中,所述订阅主题确定模块具体用于:
响应于第一通配符为单层通配符,依照所述主题过滤器中的主题层级顺序,从所述主题过滤器中所述第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符;
基于与所述第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出所述第二通配符所占据的主题层级下的第二主题集;
响应于所述第二通配符为多层通配符,或者,所述主题过滤器中在所述第二通配符之后不存在其他通配符,将所述第二主题集确定为所述订阅端所订阅的目标主题;
响应于所述第二通配符为单层通配符,将所述第二通配符作为所述第一通配符,并将所述第二主题集作为所述第一主题集,重复执行所述依照所述主题过滤器中的主题层级顺序,从所述主题过滤器中所述第一通配符所占据的主题层级的子层级起依次查找,直至查找到第二通配符,基于与所述第二通配符的通配符类型对应的主题筛选方式,从预置的第一主题集中筛选出所述第二通配符所占据的主题层级下的第二主题集的步骤,直至所述第二通配符为多层通配符,或者,所述主题过滤器中在所述第二通配符之后不存在其他通配符,将所述第二主题集确定为所述订阅端所订阅的目标主题。
12.根据权利要求9-11中任一项所述的装置,其中,所述第一主题集确定模块具体用于:
从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题,所述第一主题层级为所述主题过滤器中所述第一通配符所占据的主题层级的父层级,所述第一主题层级标识为所述主题过滤器中所述第一主题层级的层级标识;
响应于所述第一通配符为单层通配符,从所述候选主题中确定第二主题层级的层级标识与第二主题层级标识相匹配的第一主题集,所述第二主题层级为所述主题过滤器中所述第一通配符所占据的主题层级的子层级,所述第二主题层级标识为所述主题过滤器中所述第二主题层级的层级标识;
响应于所述第一通配符为多层通配符,将所述候选主题确定为所述第一通配符所占据的主题层级下的第一主题集。
13.根据权利要求12所述的装置,其中,所述初始主题集中各主题依照对应主题标识的字母顺序排列,所述第一主题集确定模块在从预置的初始主题集中确定第一主题层级的层级标识与第一主题层级标识相匹配的候选主题时,具体用于:
从预置的初始主题集中查找出第一主题层级的层级标识与第一主题层级标识相匹配的第一个主题;
由所述第一个主题起,依照所述初始主题集中主题的排列顺序进行依次查找,直至查找到第一主题层级的层级标识与第一主题层级标识相匹配的最后一个主题;
将所述第一个主题、所述最后一个主题以及所述初始主题集中位于所述第一个主题与所述最后一个主题之间的所有的主题确定为与第一主题层级标识相匹配的候选主题。
14.根据权利要求9-13中任一项所述的装置,还包括:
目标保留消息返回模块,用于在所述基于所述第一主题集确定所述订阅端所订阅的目标主题之后,从预置的保留消息库内存储的保留消息中确定与所述目标主题相关联的目标保留消息,并将所述目标保留消息返回至所述订阅端。
15.根据权利要求14所述的装置,其中,所述保留消息库是基于所述保留消息以及所述保留消息对应的键值构建的,所述目标保留消息返回模块在从预置的保留消息库内存储的保留消息中确定与所述目标主题相关联的目标保留消息时,具体用于:
从所述保留消息库中存储的键值中确定目标键值,所述目标键值包含所述目标主题的主题标识;
基于所述目标键值从所述保留消息库中查找出与所述目标主题相关联的目标保留消息。
16.根据权利要求9-15中任一项所述的装置,其中,所述初始主题集中的主题被划分至至少一个主题组内,所述主题组满足以下至少一项:
所述主题组内的被订阅主题的数量不大于第一预设值;
与所述主题组内包含的主题相关联的保留消息的数量不大于第二预设值;
对与所述主题组内包含的主题相关联的保留消息的读取频率不大于第三预设值;
对与所述主题组内包含的主题相关联的保留消息的写入频率不大于第四预设值;
对与所述主题组内包含的主题相关联的保留消息的删除频率不大于第五预设值。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211152514.XA CN115567584A (zh) | 2022-09-21 | 2022-09-21 | 订阅主题的处理方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211152514.XA CN115567584A (zh) | 2022-09-21 | 2022-09-21 | 订阅主题的处理方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115567584A true CN115567584A (zh) | 2023-01-03 |
Family
ID=84740166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211152514.XA Pending CN115567584A (zh) | 2022-09-21 | 2022-09-21 | 订阅主题的处理方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115567584A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306264A1 (en) * | 2009-06-02 | 2010-12-02 | International Business Machines Corporation | Optimizing publish/subscribe matching for non-wildcarded topics |
CN110048927A (zh) * | 2018-01-16 | 2019-07-23 | 华为技术有限公司 | 通信方法和通信装置 |
US20200195740A1 (en) * | 2017-08-29 | 2020-06-18 | Huawei Technologies Co., Ltd. | Subscribe and publish method and server |
CN111651476A (zh) * | 2020-05-18 | 2020-09-11 | 青岛海洋科学与技术国家实验室发展中心 | 一种物联网关中mqtt主题的快速匹配方法及系统 |
CN113783838A (zh) * | 2021-08-05 | 2021-12-10 | 山东有人物联网股份有限公司 | 一种订阅方法、订阅控制装置及计算机可读存储介质 |
-
2022
- 2022-09-21 CN CN202211152514.XA patent/CN115567584A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306264A1 (en) * | 2009-06-02 | 2010-12-02 | International Business Machines Corporation | Optimizing publish/subscribe matching for non-wildcarded topics |
US20200195740A1 (en) * | 2017-08-29 | 2020-06-18 | Huawei Technologies Co., Ltd. | Subscribe and publish method and server |
CN110048927A (zh) * | 2018-01-16 | 2019-07-23 | 华为技术有限公司 | 通信方法和通信装置 |
CN111651476A (zh) * | 2020-05-18 | 2020-09-11 | 青岛海洋科学与技术国家实验室发展中心 | 一种物联网关中mqtt主题的快速匹配方法及系统 |
CN113783838A (zh) * | 2021-08-05 | 2021-12-10 | 山东有人物联网股份有限公司 | 一种订阅方法、订阅控制装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3418877A1 (en) | Data writing and reading method and apparatus, and cloud storage system | |
CN112269789A (zh) | 存储数据的方法和装置、以及读取数据的方法和装置 | |
CN109788026B (zh) | 消息处理方法及装置 | |
CN107103011B (zh) | 终端数据搜索的实现方法和装置 | |
CN115525659A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN114996173B (zh) | 一种管理存储设备写操作的方法和装置 | |
CN116127154A (zh) | 知识标签推荐方法、装置、电子设备及存储介质 | |
CN113312549B (zh) | 一种域名处理方法和装置 | |
CN113360689B (zh) | 图像检索系统、方法、相关装置及计算机程序产品 | |
CN112437125B (zh) | 信息并发处理方法、装置、电子设备及存储介质 | |
CN113761565B (zh) | 数据脱敏方法和装置 | |
CN113742332B (zh) | 数据存储方法、装置、设备及存储介质 | |
CN112612790A (zh) | 卡号配置方法、装置、设备及计算机存储介质 | |
CN115567584A (zh) | 订阅主题的处理方法、装置、电子设备及可读存储介质 | |
CN115408547A (zh) | 一种字典树构建方法、装置、设备及存储介质 | |
CN114449031A (zh) | 信息获取方法、装置、设备和存储介质 | |
CN113676531B (zh) | 电商流量削峰方法、装置、电子设备及可读存储介质 | |
CN115994534A (zh) | 政务场景热词挖掘方法、装置、设备及存储介质 | |
CN113362097B (zh) | 一种用户确定方法和装置 | |
CN114995719A (zh) | 列表渲染方法、装置、设备以及存储介质 | |
CN112417259B (zh) | 媒体资源的处理方法、装置、设备及存储介质 | |
CN113656731A (zh) | 广告页面的处理方法、装置、电子设备和存储介质 | |
CN114064803A (zh) | 一种数据同步方法和装置 | |
CN114281921A (zh) | 数据的处理方法、装置、存储介质及设备 | |
CN115794876A (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 |