2.1.4 订阅管理
订阅管理是客户端从服务端根据主题获取需要的信息,包含正常的订阅流程,控制报文、有效载荷和异常的处理流程。两者交互的依据是主题。
1)订阅正常流程
如下图所示是订阅的正常流程,包含订阅和取消订阅两种场景,跟发布主题不太一样,发布主题时只有发布的场景,没有取消的场景。订阅的话是可以取消的,这样就可以由客户端灵活地控制在某一个时刻不再关注某个主题。那如果主题不想在服务器上存在的时候应该如何处理呢?协议中是没有这种场景的,笔者理解这种设计思路就应该是由使用者决定是否关注某个主题,但是只要存在的主题就不要删除了。
2)订阅管理控制报文
下图所示是订阅和取消订阅的控制报文,与上图的订阅流程是对应的,此处没有给出头部的详细信息,需要了解的话可以参考文献2。
3)订阅管理有效载荷
订阅管理的有效载荷相比发布管理的要更加丰富,如下图所示在订阅主题,订阅确认和取消订阅中都有有效载荷,其核心是主题过滤器,即订阅的时候客户端可以有多个主题,按需从服务端获取需要的信息,返回的订阅确认中会指定每个订阅主题的QOS,最后在取消订阅的主题的时候也会发出取消的主题列表。
4)订阅管理异常流程
订阅管理异常的情况只要是在订阅的控制报文头部出现异常或者QOS值不正确就会断链。因此在订阅过程中如果出现异常就可以按照下图所示的错误进行排查。
综合发布管理和订阅管理,我们来端到端的看一下整个的订阅和发布流程,如下图所示是多个发布者和多个订阅者交互信息,从图中看出发布者和订阅者之间是异步的方式,相互之间也无须关心是谁发布了主题,谁订阅了哪些主题,也无须等待消息处理结束,这样就可以提供大数据量的接入场景。
未完待续...
参考文献: