`
rensanning
  • 浏览: 3513914 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37478
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:604304
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:678049
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:87250
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:399811
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69066
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:90468
社区版块
存档分类
最新评论

MQTT入门(6)- 主题Topics

阅读更多
MQTT是基于topic来发布消息的,发布者在发布消息时需要指定该消息发布在哪个topic下。

topic最容易的理解方式是文件夹路径。如果有成千上万的不同类型的文件要保存,为了合理放置这些文件,需要创建一系列有层次性的文件夹来管理它们。发布消息就好比把文件保存到不同的文件夹下。

和文件夹类似,topic有主题级别,各级别之间是以斜杠(/)来分隔的。
比如: rensanning/home/room1/light/brightness 就有5个级别。
  • 第1层:用户
  • 第2层:场所
  • 第3层:位置
  • 第4层:物件
  • 第5层:数据指标




(1)topic名是大小写敏感的。
比如以下四个是分别不同的主题:
引用
room1/light/brightness
room1/Light/brightness
Room1/light/brightness
Room1/Light/Brightness


(2)topic名中的每个主题级别可以使用任何UTF-8字符。

(3)尽可能避免使用美元符$开头。
因为一般MQTT服务器都会使用$开头的topic存储统计信息。

比如:$SYS主题
用于存贮Broker的运行信息,只读topic不能往里publish消息。
$SYS主题有很多,具体可以参考:
http://mosquitto.org/man/mosquitto-8.html
https://github.com/mqtt/mqtt.github.io/wiki/SYS-Topics

(4)通配符:+、#
基于主题的消息过滤,可以使用通配符来订阅多个主题的消息。

但是发布消息时,不可以使用通配符,必须指定完整的topic名,如果想发送给多个topic,需要发布多次。

加号+:单层匹配


井号#:多层匹配,多用于前方一致的匹配


准确匹配一个topic:


匹配所有topic:

  • 大小: 3.6 KB
  • 大小: 6.2 KB
  • 大小: 6.5 KB
  • 大小: 6.2 KB
  • 大小: 5.6 KB
分享到:
评论
2 楼 ipodao 2018-12-20  
写的很是清楚了,我找到一份中文协议:
https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html
1 楼 Cavani_cc 2018-09-29  
还行

相关推荐

Global site tag (gtag.js) - Google Analytics