Skip to content

共享订阅 ​

1. 共享订阅 ​

​ 共享订阅是一种订阅模式,用于在多个订阅者之间实现负载均衡。客户端可以分为多个订阅组,消息仍然会被转发到所有订阅组,但每个订阅组内只有一个客户端接收消息。您可以为一组订阅者的原始主题添加前缀以启用共享订阅。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 是原始主题。

带群组的共享订阅演示页面截图

蜂信物联 | fastbee.cn