目录
1.什么是MQTT?
mqtt (Message Queuing Telemetry Transport )是一个基于客户端-服务端的消息发布/订阅传输协议,由IBM在1999年发布。
因为它轻量、简单、开放和易于实现,使得它的使用范围非常广泛。
mqtt 协议构建与TCP/IP 协议之上,建议客户端到服务端的连接,提供两者之前的一个有序的,无损的,基于字节流的双向传输
mqtt 最大的优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。因此,mqtt 可以应用在很多情况下,包括受限的环境中,比如:机器与机器的通信M2M 和物联网IOT,其中,在通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、以及一些小型化设备中已经广泛使用。
2.MQTT 历史
1999年,由Andy Stanford-Clark(IBM)和Arlen Nipper 发明
最初的目的是用最小的电池消耗以及最小的带宽通过卫星连接链接输油管
2010年,IBM 推出MQTT 3.1版本
2014年10月29日,MQTT 成为OASIS标准
3.MQTT 功能介绍
当应用数据通过mqtt 网络发送时,mqtt会把与之相关的服务质量QOS 和主题名Topic 相关联,主要特点是:
a.使用发布/订阅的消息模式,提供了一对多消息分发,可以实现与应用程序的解耦
b.对负载内容屏蔽的消息传输机制
c.数据传输和协议交换的最小化(协议头部只有2个字节),以减少网络流量
d.异常中断时,通知双方
e.传输消息有三种服务质量
- 最多一次,<=1 ,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络
- 至少一次,>=1,这一级别会确保消息到达,但消息可能会重复
- 只有一次,=1 ,确保消息只有一次到达,主要应用在一些要求比较严格的计费系统
mqtt协议中定义了一系列的方法(或动作)
主要有:
- connect
- disconnect
- subscribe
- unsubscribe
- publish
支持MQTT协议消息中间件产品?
目前有很多的MQTT消息中间件服务器,如下,都是MQTT协议的服务器端的实现。
- IBM Websphere
- MQ Telemetry
- IBM MessageSight
- Mosquitto
- Eclipse Paho
- emqttd Xively
- M2M.io
- webMethods
- Nirvana Messaging
- RabbitMQ
- Apache ActiveMQ
- Apache Apollo
- Moquette
- HiveMQ
- Mosca
- Litmus Automation Loop
- JoramMQ
- ThingMQ
- VerneMQ
4.MQTT 协议框架
mqtt 软件架构
在软件架构中,发布订阅是一种消息传输模式
消息发送者,成为发布者publisher;消息接收者,称为订阅者subscriber。此两者之前并不直接发送消息,而是把消息归为与订阅者无关的类别。
5.MQTT 示例
参考: