MQTT02 主题

作者: 码字小能手 | 来源:发表于2021-03-14 13:16 被阅读0次

@[toc]

主题(消息路由),子主题,分组订阅(共享订阅)

(1) 常见的主题形式以及定义

mqtt 常见的topic 形式举例


chat/room/1

sensor/10/temperature

sensor/+/temperature

$SYS/broker/metrics/packets/received

$SYS/broker/metrics/#

$queue/t/1

$share/abc/t/1

定义形式: 可以理解问文件式的分层结构: chat/root/1,主题是以 ”/“ 分割的

(2)子主题(解释下 ”+“ , ”#“ 通配符的使用)

通配符 ”+“ 的使用


'+': 表示通配一个层级,例如a/+,匹配a/x, a/y
    
'#': 表示通配多个层级,例如a/#,匹配a/x, a/b/c/d

'+' 表示 一个的占位 , client 订阅 a/+ 相当有订阅月 a/ ... 等主题, 可以如:

sensor/+/temperature 形式来订阅 sensor/未知主题/temperature 下的消息

通配符 ”#“ 的使用

'#' 表示 多个占位 ,client 订阅 a/# 相当于a 文件夹的子文件夹,以及子文件夹的子文件夹都会被订阅

(3) 分组订阅 (共享订阅)

定义:适用于消息让一个集群中只有一台机器消费的场景歌(基于mqtt 服务 EMQ 的,其他的中间件原理查不多)

示例 前缀 真实主题名
$queue/t/1 $queue/ t/1
$share/abc/t/1 $share/abc t/1

群组订阅

以 $share/<group-name> 为前缀的共享订阅是带群组的共享订阅

group-name 可以为任意字符串,属于同一个群组内部的订阅者将以负载均衡接收消息,但 EMQ X 会向不同群组广播消息。

例如,假设订阅者 s1,s2,s3 属于群组 g1,订阅者 s4,s5 属于群组 g2。那么当 EMQ X 向这个主题发布消息 msg1 的时候:

EMQ X 会向两个群组 g1 和 g2 同时发送 msg1

s1,s2,s3 中只有一个会收到 msg1

s4,s5 中只有一个会收到 msg1


                                       [s1]
           msg1                      /
[emqx]  ------>  "$share/g1/topic"    - [s2] got msg1
         |                           \
         |                             [s3]
         | msg1
          ---->  "$share/g2/topic"   --  [s4]
                                     \
                                      [s5] got msg1



不带群组订阅

queue/ 为前缀的共享订阅是不带群组的共享订阅。它是share 订阅的一种特例,相当与所有订阅者都在一个订阅组里面

                                       [s1] got msg1
        msg1,msg2,msg3               /
[emqx]  --------------->  "$queue/topic" - [s2] got msg2
                                     \
                                       [s3] got msg3


如图相当于消息只会被 一个机器节点 s1 | s2 | s3 消费而不会每个机器都给消息消费一次

EMQ 负载均衡配置与派发Ack 配置


# etc/emqx.conf

# 均衡策略
broker.shared_subscription_strategy = random

# 适用于 QoS1 QoS2 消息,启用时在其中一个组离线时,将派发给另一个组
broker.shared_dispatch_ack_enabled = false


更多EMQ 使用参照 EMQ官方文档

更多的mqtt 问题,欢迎查看专题下的其他文章查看 ,也欢迎留言,也可以加我微信 Yangting199306 备注 简书 一起讨论技术,也可以一起写文章

一起学Java ,跟强哥得永生,点赞关注 !!!

相关文章

  • MQTT02 主题

    @[toc] 主题(消息路由),子主题,分组订阅(共享订阅) (1) 常见的主题形式以及定义 mqtt 常见的to...

  • 主题,主题,还是主题

    六年级的儿子语文成绩很不稳定,前面语基基本不扣分,扣分基本在作文和阅读上。阅读不说了,有些题目实在让人无从下脑,得...

  • 没主题的主题

    这次题目没有主题,前几天想写网络安全,来自再一次体验到网络隐私的可怕,在往前推几天想写买买买,在上周的SUMMER...

  • 主题

  • 主题

    最近写作业总是想不到写什么主题,没思路加上文笔匮乏,每次写文都有点挤牙膏之感。理智告诉我:该学习了,哪里匮乏补哪里...

  • 主题

    主题来源,主题反思。主题网络图。

  • 主题

    朦胧的,我对你的爱意, 在滋长,或是已在消退? 我无法探索你眼中的情意, 不能在你的爱海里陶醉。 但是,请允许我说...

  • 主题

    内容

  • 主题

    隔着一条河的 是古旧的期盼 石头缝隙里长出的草一样 可我一向慌张 脸通红 脚步凌乱 可以 买一张船票 站在码头 招手眺望

  • 主题

    后来啊,似乎一瞬间明白了很多东西,但可惜的是,这些东西都与自己无关。

网友评论

    本文标题:MQTT02 主题

    本文链接:https://www.haomeiwen.com/subject/pbkxcltx.html