产品定价 立即试用
MQTT Broker
文档 > 管理用户界面 > 订阅
入门
安装 架构 API 常见问题
目录

订阅

自 TBMQ 版本 2.0 起可用

在MQTT中,subscription是允许客户端接收发往特定主题的消息的机制。 客户端订阅主题时,表示希望接收发往该主题的所有消息。

Subscriptions表

在Subscriptions页面,可查看、分析或筛选 broker上的所有订阅。 表包含每项订阅的以下信息:

  • Client ID。 拥有该订阅的客户端标识符。
  • Topic filter(主题过滤器)。MQTT主题过滤器。
  • QoS。订阅的服务质量。
  • Retain as Published。为true时,通过此订阅转发的消息保留其发布时的RETAIN标志。
  • Retain Handling(保留消息处理)。该选项决定客户端订阅主题时broker如何处理保留消息。
    • 0 - 在订阅时发送保留消息;
    • 1 - 若订阅尚不存在,则在订阅时发送保留消息;
    • 2 - 在订阅时不发送保留消息。
  • No local。为true时,broker不会将来自此客户端的消息转发回进行该订阅的连接。
  • Subscription Identifier(订阅标识符)。分配给订阅的唯一数值,用于客户端区分不同订阅的消息。

管理订阅

可从 “Session details” 窗口轻松添加、删除或编辑订阅。

  1. 在左侧菜单打开 “Subscriptions” 页面。
  2. 点击表行打开会话订阅详情。
  3. 添加、编辑或删除客户端订阅。
  4. 点击 “Update” 保存更改。
文档信息图标
Subscriptions chart

可在 Monitoring 和首页页面跟踪当前订阅数量及其它broker活动。

清空空订阅节点

Broker中的订阅使用 Trie 数据结构存储在内存中, 该结构以高效搜索著称。 Trie(亦称前缀树)是一种基于树的数据结构,可根据键或字符序列快速检索信息。

Trie以层级方式组织topic filters,每个节点表示topic filter的一个主题层级。 使用Trie结构,broker可根据发布消息提供的topic name快速定位和检索客户端订阅。 这确保客户端能及时收到感兴趣的消息,有助于提升broker的性能与响应速度。

当客户端订阅被删除(unsubscribe)时,broker从内存中移除数据并将节点标记为空。 随着时间推移,若删除大量订阅, broker内存中可能遗留大量空节点。 这些空节点会导致效率下降并浪费内存资源。

清空空订阅节点可释放内存资源,并可能提升broker性能, 因为空节点减少后,订阅匹配处理会更快。

清空空订阅节点:点击右上角 “Clear empty subscription nodes” 按钮(垃圾桶图标)并确认。

此外,broker通过调度器配置为定期清空空订阅节点。由以下环境变量控制: MQTT_SUB_TRIE_CLEAR_NODES_CRONMQTT_SUB_TRIE_CLEAR_NODES_ZONE