MQTT介绍
1. 应用场景:物联网行业
2. 常见特点
- 轻量级
- 可靠性强
- 安全性强
- 双向通信(既可以做发布者,也可以做订阅者)
- 多语言支持
3. 实现协议相关的库:EMQX...
EMQX入门
部署
服务端部署:docker
客户端部署:MQTTX
QOS
- QOS=0 即发即弃,没有应答。消息可能会丢失
- QOS=1 发送端存储,设置packetid,等会brocker响应,如果没有响应,就会重传。可能会导致消息重复
- QOS=2 保证之发送一次,不丢失
常用场景:
qos=0: 高频,不重要,如传感器
qos=1: 重要数据,比如下达关键指令
qos=2: 金融,航空等业务场景
主题详解
支持多层级主题,以/以划分
如:/chat/room/1
+表示一层 /chat/+/1
表示多层 /chat/#
SYS系统主题
消息详解
保留消息
- 保留在mqtt服务器中,任何新的订阅者与该保留消息主题匹配,都会立即受到这条消息。
- 保留消息针对某一个主题,最多只有一个最新保留消息。
- 保留消息主题发布之前订阅不能收到保留消息,必须发布后重新订阅才会收到保留消息。
- 保留消息删除,发布一个空的保留消息,dashbord直接删除,设置存活时间
使用场景:传感器的版本号,传感器最新的数据
消息过期时间
遗嘱消息
链接意外断开,mqtt自动发布的已经注册的遗嘱消息
延迟发送
延迟多少秒后发送消息 $delayed/${interval}/${topicname}
用户属性
在connect,disconnect, publish, subscribe报文中,加入用户自定义的信息,一般由key和value组成
应用场景:
日志记录
消息分类
订阅选项
Qos
No local=1不要把消息发送给发送者
Retain as Publish
Retain Hanling
共享订阅
分散发送消息给订阅者
带群组的共享订阅$share/abc/test,每个群组下面都会有一个订阅者收到消息
不带群组的共享订阅$queue/test,相当于多个订阅者属于同一个组
算法:轮询,随机,哈希...
排他订阅
一个主题同一时刻只能有一个订阅者
$exclusive/topicname,这个对于一个主题,只能有一个排他订阅,其他订阅没影响