Application Shared Subscription实体支持为 APPLICATION 客户端使用 Shared Subscriptions 功能。 该功能允许多个客户端订阅共享订阅并接收消息。
使用说明
在TBMQ中,Application shared subscriptions是用于管理共享订阅的实体。
- 若计划与 Application clients 使用共享订阅功能,请添加Application shared subscriptions。
- 创建后,Topic filter 和 Partitions 字段不可修改。
- Application Shared Subscription功能支持MQTT v5及更早版本。
Broker管理员可通过Web UI或 REST API 管理共享订阅。
添加Shared Subscription
添加新共享订阅,请按以下步骤操作:
- 打开 Shared Subscriptions 页面,点击加号图标Add Application Shared Subscription。
- 在对话框中填写以下字段:
- Name - 共享订阅名称,可为任意名称,如 “Application Shared Subscription”。
- Topic filter - 实际的主题过滤器,可包含通配符(#、+)。若共享订阅topic filter为
$share/group1/city/+/home/#,则将Topic filter字段设为city/+/home/#。 创建后不可修改,且必须唯一。 - Partitions - 建议partition数量等于或为预期共享订阅客户端数量的倍数。 例如,若有5个客户端将订阅该共享订阅,可将Partitions设为5、10或15。 这将保证负载在订阅者间均匀分布。创建后不可修改。
- 点击 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字段。
编辑实体步骤:
- 点击Shared Subscriptions表中对应行。
- 点击右上角铅笔图标的 Toggle edit mode 按钮。
- 修改名称。
- 点击 Apply changes 按钮保存。
删除Shared Subscriptions
可通过Web UI或 REST API 从TBMQ系统中移除Shared Subscriptions实体。
删除方式:
- 单条删除。
- 点击subscriptions对应行的Delete图标并确认。
- 点击行后,在实体详情右侧面板中点击 Delete Application Shared Subscription 按钮。
- 批量删除。
- 勾选复选框选择多条,再点击右上角Delete图标并确认。
删除Application Shared Subscription实体后,对应的Kafka topic也将被删除。
注意,需将 TB_KAFKA_ENABLE_TOPIC_DELETION 环境变量设为 true。