# 订阅主题树

订阅主题树是 EMQX Edge Dashboard **Monitor** 页面中的可视化功能。它以树状层级展示所有 MQTT 主题订阅，帮助你清晰查看主题关系、订阅数量以及客户端订阅详情。

## 功能

- **树状视图**：按照 MQTT 主题层级结构展示所有已订阅主题。
- **订阅统计**：显示每个主题节点下订阅客户端的数量。
- **可展开节点**：支持展开和折叠主题分支，便于浏览多层主题结构。
- **主题详情**：点击主题节点后，会打开详情面板，显示完整主题路径和已订阅客户端列表。
- **关键字过滤**：支持按关键字快速搜索和过滤主题。

## 使用场景

订阅主题树功能适用于以下场景：

- **主题规划验证**：验证系统中的主题层级设计是否符合预期。
- **订阅监控**：实时监控每个主题的订阅客户端数量。
- **故障排查**：快速定位指定主题的订阅详情，辅助问题诊断。
- **系统审计**：了解整个 MQTT Broker 中主题订阅的分布情况。

## 使用订阅主题树

本节演示客户端订阅 MQTT 主题后，如何通过主题树查看并验证订阅情况。

### 订阅主题

为便于演示，你可以使用 EMQX Edge Dashboard 内置的 **Tools** 页面模拟 MQTT 客户端。

1. 打开 Edge Dashboard。

2. 进入 **Tools**。

3. 点击 **Connect** 建立默认连接。

4. 在 **Subscription** 区域，依次订阅以下主题：

   - `t`
   - `t/1`
   - `t/1/2`
   - `t/1/2/test`

   ![sub-to-topics](./assets/sub-to-topics.png)

5. 点击 **Default** 标签页旁边的 **+**，新建两个客户端连接，并让这两个客户端都订阅主题 `t/1`。

### 查看主题树结构

1. 进入 **Monitor** -> **Subscriptions Topic Tree**。

2. 找到根主题节点 `t`，它表示顶层主题。

3. 点击主题旁边的展开图标，查看其层级结构。你会看到相关主题以嵌套形式排列：

   ```
   t                    1 client subscribed
     └─ 1               3 clients subscribed
         └─ 2           1 client subscribed
             └─ test    1 client subscribed
   ```

   **说明**：

   - **Topic Nodes**：每一行表示一个主题层级。

   - **Indentation Levels**：表示主题之间的父子关系。

   - **Subscription Count**：显示在右侧，表示订阅该主题的客户端数量。


### 查看主题详情

点击任意主题节点，右侧会打开详情面板。该面板显示：

- **Full Topic**：完整主题路径
- **Subscribed Clients**：订阅该主题的客户端 ID 列表

如果订阅客户端较多，可使用分页控件浏览完整列表。

![topic_details](./assets/topic-details.png)

### 过滤主题

要快速定位指定主题：

1. 在页面顶部搜索框中输入关键字。
2. 点击搜索图标或按 Enter。
3. 树状视图只会显示匹配关键字的主题及其父路径。

### 刷新数据

点击页面右上角的刷新按钮，可重新加载并显示最新的主题订阅数据。
