功能
啟動時,讀取持久化的信息,構建出訂閱樹
根據可訂閱/取消訂閱/讀取訂閱(包括計算出QoS)
類圖
這里寫圖片描述
既然是一棵樹,那么肯定是由一堆Node組成的,TopicTreeNode持有當前的topic的segment,通配符訂閱者信息(包含訂閱者、訂閱的QoS、是否共享訂閱、以及共享訂閱組信息)。
每個節點都可以提供訂閱、取消訂閱、獲得訂閱者信息、以及一些訂閱樹節點的數據的增刪改查操作。
TopicTree實現類持有了node的根結點,與每個節點一致提供對應訂閱樹的操作。
Persistence相關的處理與支持的業務基本上與上節講解一致,此處就不多作贅述了。
TopicTreeBootstrap在broker啟動時根據cluster中client session、client session subscriptions、shared subscription來在內存中構建出這一棵樹,以便在后續使用時,能夠在內存中實時獲得到同步的內存訂閱樹。
訂閱樹是在每種類型的mqtt broker中幾乎都會存在的,訂閱樹的問題屬于優化問題,只有針對符合的場景才能發揮其結構、存儲、設計的巧妙。