mqtt协议实现--订阅管理(3)

本文详细介绍了MQTT协议中的订阅管理,包括正常订阅流程、控制报文、有效载荷和异常处理。订阅管理允许客户端根据主题获取信息,并能自由取消订阅。异常主要发生在控制报文头部错误或QOS值不正确时。此外,还探讨了订阅管理的有效载荷,其核心是主题过滤器,允许客户端订阅多个主题。整个订阅和发布流程是异步的,支持大数据量接入场景。
摘要由CSDN通过智能技术生成

2.1.4 订阅管理

        订阅管理是客户端从服务端根据主题获取需要的信息,包含正常的订阅流程,控制报文、有效载荷和异常的处理流程。两者交互的依据是主题。

1)订阅正常流程

        如下图所示是订阅的正常流程,包含订阅和取消订阅两种场景,跟发布主题不太一样,发布主题时只有发布的场景,没有取消的场景。订阅的话是可以取消的,这样就可以由客户端灵活地控制在某一个时刻不再关注某个主题。那如果主题不想在服务器上存在的时候应该如何处理呢?协议中是没有这种场景的,笔者理解这种设计思路就应该是由使用者决定是否关注某个主题,但是只要存在的主题就不要删除了。

 

2)订阅管理控制报文

        下图所示是订阅和取消订阅的控制报文,与上图的订阅流程是对应的,此处没有给出头部的详细信息,需要了解的话可以参考文献2。

 

3)订阅管理有效载荷

        订阅管理的有效载荷相比发布管理的要更加丰富,如下图所示在订阅主题,订阅确认和取消订阅中都有有效载荷,其核心是主题过滤器,即订阅的时候客户端可以有多个主题,按需从服务端获取需要的信息,返回的订阅确认中会指定每个订阅主题的QOS,最后在取消订阅的主题的时候也会发出取消的主题列表。

 

4)订阅管理异常流程

        订阅管理异常的情况只要是在订阅的控制报文头部出现异常或者QOS值不正确就会断链。因此在订阅过程中如果出现异常就可以按照下图所示的错误进行排查。

        综合发布管理和订阅管理,我们来端到端的看一下整个的订阅和发布流程,如下图所示是多个发布者和多个订阅者交互信息,从图中看出发布者和订阅者之间是异步的方式,相互之间也无须关心是谁发布了主题,谁订阅了哪些主题,也无须等待消息处理结束,这样就可以提供大数据量的接入场景。

 未完待续...

参考文献:

[2]Introduction · MQTT协议中文版 (gitbooks.io)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值