物联网系统开发:从0到1构建IoT平台
上QQ阅读APP看书,第一时间看更新

第3章 MQTT协议基础

MQTT协议是运行在TCP协议栈上的应用层协议,虽然MQTT协议的名称有Message和Queue两个词,但是它并不是像RabbitMQ那样的消息队列,这是初学者最容易搞混的一个问题。MQTT协议与传统的消息队列相比,有以下几个区别。

1)传统消息队列在发送消息前必须先创建相应的队列。在MQTT协议中,不需要预先创建要发布的主题(可订阅的Topic)。

2)传统消息队列中,未被消费的消息会被保存在某个队列中,直到有一个消费者将其消费。在MQTT协议中,如果发布一个没有被任何客户端订阅的消息,这个消息将被直接扔掉。

3)传统消息队列中,一个消息只能被一个客户端获取。在MQTT协议中,一个消息可以被多个订阅者获取,MQTT协议也不支持指定消息被单一的客户端获取。

MQTT协议有几个不同的版本,目前支持和使用最广泛的版本是3.1.1。2017年8月,OASIS MQTT Technical Committee正式发布了用于Public Review的MQTT 5.0草案。2018年,MQTT 5.0正式发布。

MQTT 5.0在MQTT 3.1.1的基础上做了很多改变,并不向下兼容。本书以MQTT 3.1.1标准为主,同时也会讲到MQTT 5.0的新特性。