MQTT百科
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。
从危机百科可以看出,MQTT是一种协议,不是一种消息队列。尽管,它有消息队列的设计,但更侧重是一种网络协议。 一般推荐使用2014年10月30日发布的MQTT 3.1.1版本,关于MQTT3.1.1版本优势的文章。
几个概念
客户端(Client)
MQTT客户端是运行MQTT客户端库并通过网络连接到MQTT中间件的任何设备(从嵌入式设备到服务器)。MQTT客户端库可由各种编程语言实现。 例如,Android,Arduino,C,C ++,C#,Go,iOS,Java,JavaScript和.NET。
中间件(Broker)
MQTT中间件是MQTT协议的核心。负责接收所有消息,过滤消息,确定订阅每条消息的客户端,以及将消息发送给这些订阅的客户端。还包括对持久会话的管理,以及客户端的认证和授权等功能。例如:Mosquitto就是由Eclipse基金会维护开发的MQTT中间件。由Apache基金会维护开发的ActiveMQ消息中间件支持MQTT协议。
MQTT 连接
这里借用hivemq的几张图.
MQTT连接过程
MQTT协议是基于TCP/IP的。客户端和中间件建立连接的时候:
客户端