基于mqtt的推送服务器 2022/6/23 1 基于mqtt的推送服务器全文共10页,当前为第1页。 大纲 MQTT介绍 MQTT主题 MQTT特殊消息 MQTT消息QOS 推送服务器 2022/6/23 2 基于mqtt的推送服务器全文共10页,当前为第2页。 MQTT介绍(一) MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一个轻量的发布订阅模式消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用设计。 特点 开放消息协议,简单易实现 发布订阅模式,一对多消息发布 基于TCP/IP网络连接 1字节固定报头,2字节心跳报文,报文结构紧凑 消息QoS支持,可靠传输保证 2022/6/23 3 基于mqtt的推送服务器全文共10页,当前为第3页。 MQTT介绍(二) MQTT支持TCP和WebSocket两种协议作为传输层。 mosquitto 默认没有打开WebSocket支持,需要修改config.in打开WebSocket支持,再进行编译。 2022/6/23 4 基于mqtt的推送服务器全文共10页,当前为第4页。 M
**MQTT介绍**
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的发布订阅(Publish-Subscribe)消息传输协议,主要用于低带宽、高延迟或不可靠网络环境中的物联网(IoT)应用。MQTT协议具有以下关键特点:
1. **开放性**:MQTT是一个开放的消息协议,易于实现和部署。
2. **发布订阅模式**:支持一对多的消息发布,允许单个发布者向多个订阅者广播消息。
3. **基于TCP/IP**:MQTT构建在TCP/IP协议之上,确保了网络连接的稳定。
4. **报文结构紧凑**:具有1字节的固定报头和2字节的心跳报文,节省网络资源。
5. **消息QoS支持**:提供了消息服务质量(QoS)等级,以保证消息的可靠传输,包括QoS 0(至多一次),QoS 1(至少一次),和QoS 2(只有一次)。
**MQTT主题**
在MQTT协议中,主题(Topic)是消息路由的基础,类似于URL路径,例如`sensor/10/temperature`。主题通过`/`分隔层级,支持通配符`+`和`#`:
- `+`:代表一个层级的通配,如`a/+`可以匹配`a/x`和`a/y`。
- `#`:代表多个层级的通配,如`a/#`可以匹配`a/x`、`a/b/c/d`等所有子层级。不过,发布者不能向包含通配符的主题发布消息,只有订阅者可以订阅这样的主题。
**MQTT特殊消息**
- **遗愿消息(Last Will)**:客户端在连接服务器时可设置遗愿消息,当客户端异常断开时,服务器会发布此消息。
- **保留消息(Retained Message)**:客户端发布的消息可以标记为保留,服务器会存储每个主题的最新保留消息,并在新订阅者上线时发送此消息。保留消息可以通过发布空消息或设置超时来清除。
**MQTT消息QoS**
MQTT提供三种消息QoS级别:
- QoS 0:至多一次,消息可能丢失,但不会重复发送。
- QoS 1:至少一次,消息不会丢失,但可能会重复。
- QoS 2:只有一次,确保消息不丢失且不会重复,但实现起来较为复杂。
QoS级别并非端到端保证,而是客户端和服务器间的保证。订阅者接收到的消息QoS取决于发布消息的QoS和订阅主题的QoS。
**推送服务器**
推送服务器通常使用MQTT协议来处理设备和应用程序之间的消息传递。例如,`Mosquitto`是一个流行的MQTT代理,它支持TCP和WebSocket连接。在集群环境中,可以配置多个Mosquitto实例以提高服务的可用性和性能。推送服务器可能还包括其他组件,如鉴权模块,以及与数据处理系统(如Kafka)的集成,以实现大规模消息的处理和存储。线程池机制用于优化内部数据处理,提高效率,例如Kafka线程池、数据处理线程池和Mqtt线程池。