说明:
本文介绍如何在腾讯云 MQTT 控制台配置和管理共享订阅功能。共享订阅是一种负载均衡的消费方式,属于同一个消费组的多个客户端轮转分配订阅的消息。
说明:
在标准的 MQTT 协议中,共享订阅(Shared Subscription)是 MQTT 5.0 新增的功能,但是腾讯云消息队列 MQTT 版在服务端做了功能增强,除了 5.0 版本的客户端外,同时支持 3.1 和 3.1.1 版本的客户端,3.1 和 3.1.1 版本的客户端直接按照共享订阅的使用规范进行订阅即可。
在使用共享订阅前,需要在页面先创建完成共亨订阅组(ShareName),否则客户端在订阅时会订阅失败。
前提条件
操作步骤
创建共享订阅组
1. 登录 MQTT 控制台。
2. 在左侧导航栏单击 资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入集群基本信息页面。
3. 进入 共享订阅组 页签,单击 新建 创建共享订阅组,根据要求在下图中填写如下字段:
参数项 | 说明 | 示例值 |
共享订阅组名称 | 不能为空,1-64个字符,支持字母、数字 | order_processing_group |
负载均衡策略 | ○ 随机(默认策略,即random):即在不同的订阅客户端间分发负载(默认策略) ○ 分区哈希:在一定程度上保证消息负载时的消息顺序性。选择该模式后,需要另外填写负载均衡生效的时间。即新的消费者客户端加入后,要在经过指定时延后,才会加入到负载均衡策略中。 | 随机分发 |
描述 | 共享订阅组创建时的备注,选填 | 订单处理多客户端负载 |
4. 单击 提交 后创建完成。

查看共享订阅组
1. 登录 MQTT 控制台。
2. 在左侧导航栏单击资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入集群基本信息页面。
3. 进入 共享订阅管理 页签,即可查看和管理当前集群的共享订阅组(ShareName)列表。根据标准协议的定义,共享订阅的主题形式为
$share/{ShareName}/{filter}
,其中 $share/
为协议指定的使用共享订阅时的标记;ShareName
即页面展示的共享订阅组的组名;{filter}
即客户端正常订阅时使用的 Topic Filter。说明:
为了便于客户使用,列表页会自动展示当前集群已存在的共享订阅组的信息,即如果客户端使用了
$share/{ShareName}/{filter}
进行共享订阅,则 ShareName 会自动出现在共享订阅组的列表,默认的负载均衡策略为随机策略。4. 单击具体的共享订阅组名称进入查看共享订阅组的详情,如下图所示。详情页面会展示当前共享订阅的详情,当前共享订阅组(ShareName)下的订阅表达式(filter)以及点开后展示对应 filter 下的客户端和客户端状态。
说明:
在保证共享订阅消息负载的顺序性时,即负载均衡模式选择为“ 分区哈希”,客户端的在线状态会引入负载均衡时延的影响。如果客户端 session 已经不存在,只要在负载均衡的时效内,依然会展示为“在线”状态;客户端连接断开时间超出负载均衡生效时延后会展示为“离线”状态。

编辑共享订阅组
1. 登录 MQTT 控制台。
2. 在左侧导航栏单击资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入集群基本信息页面。
3. 进入 共享订阅管理 页签,即可查看和管理当前集群的共享订阅组(ShareName)列表。
4. 在共享订阅组列表的操作列,单击 编辑 进行共享订阅组的信息的修改,负载均衡策略不支持修改,避免策略过渡期间出现消息重复或顺序性无法保证的问题;如果需要修改一个共享订阅组的负载均衡策略,可以在暂停客户端并删除共享订阅组后,重新配置不同负载均衡策略的共享订阅组。
如果负载均衡策略是“随机”,则仅能修改描述部分。
如果负载均衡策略是“分区哈希”,则可以修改描述和负载均衡生效时间。
删除共享订阅组
删除共享订阅组时,需要考虑删除后对线上的影响,MQTT 也会对共享订阅组是否有订阅进行校验,如下图所示。请确认当前所有的客户端 Session 都下线后再进行删除。
