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

应用共享订阅

Application Shared Subscription实体支持为 APPLICATION 客户端使用 Shared Subscriptions 功能。 该功能允许多个客户端订阅共享订阅并接收消息。

使用说明

在TBMQ中,Application shared subscriptions是用于管理共享订阅的实体。

  • 若计划与 Application clients 使用共享订阅功能,请添加Application shared subscriptions。
  • 创建后,Topic filterPartitions 字段不可修改
  • Application Shared Subscription功能支持MQTT v5及更早版本

Broker管理员可通过Web UI或 REST API 管理共享订阅。

添加Shared Subscription

添加新共享订阅,请按以下步骤操作:

  1. 打开 Shared Subscriptions 页面,点击加号图标Add Application Shared Subscription。
  2. 在对话框中填写以下字段:
    • Name - 共享订阅名称,可为任意名称,如 “Application Shared Subscription”。
    • Topic filter - 实际的主题过滤器,可包含通配符(#、+)。若共享订阅topic filter为 $share/group1/city/+/home/#,则将Topic filter字段设为 city/+/home/#。 创建后不可修改,且必须唯一。
    • Partitions - 建议partition数量等于或为预期共享订阅客户端数量的倍数。 例如,若有5个客户端将订阅该共享订阅,可将Partitions设为5、10或15。 这将保证负载在订阅者间均匀分布。创建后不可修改。
  3. 点击 Add 按钮。

执行上述操作后,将添加名为 tbmq.msg.app.shared.city.slw.home.mlw 的Kafka topic。 主题名称的构建方式是将 MQTT 主题过滤器映射到对应的 Kafka 主题。 通过遵循特定的命名约定(MQTT 主题过滤器 -> Kafka 主题)实现该映射。

1
2
3
test/topic -> tbmq.msg.app.shared.test.topic
test/# -> tbmq.msg.app.shared.test.mlw
test/+ -> tbmq.msg.app.shared.test.slw

其中

  • tbmq.msg.app.shared. 作为前缀添加
  • / 替换为 .
  • # 替换为 mlw(多级通配符)
  • + 替换为 slw(单级通配符)

若 MQTT 主题过滤器包含上述未提及的任何特殊字符(除字母数字外), 将使用主题过滤器派生的哈希创建 Kafka 主题。 此方式可确保生成的 Kafka 主题有效且符合必要的命名约定。

1
tbmq.msg.app.shared.$TOPIC_FILTER_HASH

上述行为可通过 TB_APP_PERSISTED_MSG_SHARED_TOPIC_VALIDATION 属性进行调控。 默认情况下该变量已启用,表示验证流程处于激活状态,确保正确创建主题。 但若将该变量设为 false 以禁用验证, 系统将不再为包含特殊字符的共享订阅创建 Kafka 主题, 导致无法创建对应主题。 配置环境和处理包含特殊字符的主题过滤器时请务必注意这一点。

编辑Shared Subscriptions

当前TBMQ版本中,创建后仅可编辑Shared Subscription的Name字段。

编辑实体步骤:

  1. 点击Shared Subscriptions表中对应行。
  2. 点击右上角铅笔图标的 Toggle edit mode 按钮。
  3. 修改名称。
  4. 点击 Apply changes 按钮保存。

删除Shared Subscriptions

可通过Web UI或 REST API 从TBMQ系统中移除Shared Subscriptions实体。

删除方式:

  1. 单条删除
    • 点击subscriptions对应行的Delete图标并确认。
    • 点击行后,在实体详情右侧面板中点击 Delete Application Shared Subscription 按钮。
  2. 批量删除
    • 勾选复选框选择多条,再点击右上角Delete图标并确认。

删除Application Shared Subscription实体后,对应的Kafka topic也将被删除。 注意,需将 TB_KAFKA_ENABLE_TOPIC_DELETION 环境变量设为 true