共享订阅
一、共享订阅
共享订阅是一种订阅模式,用于在多个订阅者之间实现负载均衡。客户端可以分为多个订阅组,消息仍然会被转发到所有订阅组,但每个订阅组内只有一个客户端接收消息。您可以为一组订阅者的原始主题添加前缀以启用共享订阅。MQTT支持两种格式的共享订阅前缀,分别为带群组的共享订阅(前缀为 $share/<group-name>/)和不带群组的共享订阅(前缀为 $queue/)。两种共享订阅格式示例如下:
| 前缀格式 | 示例 | 前缀 | 真实主题名 |
|---|---|---|---|
| 带群组格式 | $share/post/test/1 | $share/post/ | test/1 |
| 不带群组格式 | $queue/t/1 | $queue/ | t/1 |
带群组的共享订阅
您可以通过在原始主题前添加 $share/<group-name> 前缀为分组的订阅者启用共享订阅。组名可以是任意字符串。MQTT 同时将消息转发给不同的组,属于同一组的订阅者可以使用负载均衡接收消息。
例如,如果订阅者 subscriber1、subscriber2 和 subscriber3 是组 group1 的成员,订阅者 subscriber4 和 subscriber5 是组 group2 的成员,而所有订阅者都订阅了原始主题 test1。共享订阅的主题必须是 $share/group/test1 和 $share/group2/test1。当MQTT发布消息 msg1 到原始主题 test1 时:
- MQTT将
message01发送给group1和group2两个组。 subscriber1、subscriber2、subscriber3中的一个订阅者将接收 ``message1`。subscriber4和subscriber5中的一个订阅者将接收 ``message1`。

不带群组的共享订阅
以 $queue/ 为前缀的共享订阅是不带群组的共享订阅。它是 $share 订阅的一种特例。您可以将其理解为所有订阅者都在一个订阅组中,如 $share/$queue。

带群组的共享订阅演示
在连接窗格中依次选择订阅者客户端,点击添加订阅为各个订阅者创建共享订阅。根据下面的规则在主题栏中输入正确的主题。
为了给多个订阅者分组,您需要在订阅的主题t/1前加上组名 {group} 。为了使他们同时订阅同一个主题,您还需要在组名前加上前缀 $share。
在添加订阅弹出窗口中:
- 将
Subscribe1和Subscriber2订阅的主题设为$share/test/1。
在以上主题示例中,
前缀
$share表明这是一个共享订阅。t/1是原始主题。

