配置自动订阅

最近更新时间:2025-08-22 17:48:52

我的收藏
说明:
当前功能灰度中,如控制台提示当前集群暂未开启该功能, 请提交工单联系我们处理。
本文介绍了如何在腾讯云消息队列 MQTT 版控制台配置和管理自动订阅功能。
自动订阅是 MQTT 在标准协议外额外支持的功能,允许在客户端连接时​​,根据预先在控制台配置的规则,自动建立预设订阅关系​​,无需客户端额外发起订阅和发送 SUBSCRIBE 报文。该功能适用于以下场景:
物联网设备统一管理订阅行为
简化客户端代码逻辑
确保关键主题(如指令下发通道)必定被指定一批设备订阅
说明:
自动订阅规则会在客户端​​连接时进行判断​。若客户端如果已经在线,在配置完成该客户端的自动订阅规则后,客户端不会立刻订阅对应的主题。这种情况下,自动订阅规则只会在客户端​下次连接时生效。
自动订阅规则如果出现配置冲突时(如对于用一个用户名订阅相同的Topic Filter 的订阅选项不一致),以最新配置的规则为准,即规则会按照时间顺序先后覆盖。
自动订阅规则内的订阅数量也会被计算在集群和单个 client ID 的订阅数量限额内(详见使用限额说明),因此请注意自动订阅规则的数量,避免滥用。
当多个订阅场景出现限额冲突时,将按照“非 Clean Session 订阅(历史已存在的订阅) > 自动订阅规则 > 客户端新增的手动订阅 ”的优先级进行限流。举例说明:
案例1:某个客户端在创建自动订阅规则前,共有28个订阅,配置了自动订阅规则后,新增了5个 Topic Filter 的订阅。在客户端断开并再次上线后,按照自动订阅规则依次订阅新增的 Topic Filter,当订阅到第3个 Topic Filter 后,超出了30个的单客户端限额,第3 - 5个自动订阅规则内的 Topic Filter 订阅没有生效,在客户端详情页可以查看订阅失败事件及原因,详见客户端事件
案例2:某个在线的客户端当前已有20个订阅,新增了自动订阅规则内的10个 Topic Filter 的订阅,此时仍然在30个的限额内,正常订阅。之后该客户端新上线业务,新增了1个 Topic Filter 订阅,此时刚好超出限额,则新增的订阅返回失败,同时在客户端详情页可以查看订阅失败事件及原因,详见客户端事件
案例3:某个客户端的 clean session=false,该客户端已有30个订阅。后续新增了一个自动订阅规则,包含10个 Topic Filter,当客户端在 session 过期时间前再次上线后,首先恢复历史订阅,对于和历史订阅 topic filter 一致的自动订阅直接覆盖。之后依次订阅新增的自动订阅规则内的 Topic Filter,但是新增的 Topic Filter 均超出限额,因此超限部分的订阅失败,在客户端详情页可以查看订阅失败事件及原因,详见客户端事件

前提条件

确保自动订阅规则适用的客户端有连接(CONNECT)集群,使用指定用户名订阅 和 对应主题的订阅(SUBSCRIBE)权限,否则自动订阅时会被权限策略拒绝,详见数据面授权说明

操作步骤

创建自动订阅规则

1. 登录 MQTT 控制台
2. 在左侧导航栏单击 资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入集群基本信息页面。
3. 进入 自动订阅 页签,单击 新建规则 创建自动订阅规则,根据要求填写如下字段:
​​参数项​​
​​必填​​
​​说明​​
​​示例值​​
规则名称
不能为空,3-64个字符,支持中文、字母、数字、“-”及“_”
device_cmd_sub
规则描述
规则的备注和说明
-
创建方式
-
可以选择策略生成器,进行可视化配置;也可以选择JSON使用JSON 语法进行配置,输入框会对 .json 的文件格式进行校验,适用于配置项较多的场景。
-
用户名
请填写单个用户名或单条表达式,支持使用通配符和策略变量,详见 表达式说明。 请确保当前用户名拥有对应数据面权限。
*
客户端 ID
填写单条资源表达式,支持使用通配符和策略变量,详见 表达式说明。请确保当前客户端拥有对应数据面权限。
*
订阅选项
Topic Filter:自动订阅的目标 Topic Filter
QoS:0/1/2
No Local:客户端是否接收​​自身发布​​的消息
Retain as Published:转发保留消息时​​是否保持其原始 Retain 标志
Retain Handling:订阅建立时是否发送保留消息的情况
"topicFilter": "home/#",
"qos": 0,
"noLocal": 0, "retainAsPublished": 1,
"retainHandling": 0
4. 单击 创建策略,完成规则的创建。
5. 创建规则完成后,默认规则为“未启用”的状态,单击 启用 后,生效当前规则。

自动订阅规则管理

1. 登录 MQTT 控制台
2. 在左侧导航栏单击 资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入集群基本信息页面。
3. 进入 自动订阅 页签,可以对自动订阅规则进行管理。单击操作列的 编辑,对已有规则进行编辑。单击操作列的 复制,可以在某条规则的基础上进行简单修改,创建出相似的规则。
4. 仅“未启用”状态下的规则支持删除。因此要删除某条规则时,务必先禁用某条规则后再进行删除。