MQTT 协议开发入门
[MQTT]是一个客户端-服务器发布/订阅消息传输协议. 它轻量,开放,简单, 并易于实现.这些特性,使它在许多情况下适合使用, 包括受限的环境中,如机器对机器(M2M)之间通信和物联网(IoT)环境中,需要体积小的代码和/或网络带宽是昂贵的。
协议特点
此协议运行于TCP/IP以上, 或在其他网络协议,提供有序、 无损、 双向网络连接. 它的功能包括:
-
使用发布/订阅消息模式提供一个一对多的消息分发,解除了应用程序之间的耦合。
-
对负载内容屏蔽的消息传输。
-
有三种消息传递服务质量 :
发布订阅
MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。
服务质量
-
至多一次",消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。
-
“至少一次”,确保消息到达,但消息重复可能会发生。
-
“只有一次”,确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。
MQTT协议中的术语
-
订阅(Subscription)
订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。
-
会话(Session)
每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。
-
主题名(Topic Name)
连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。
-
主题筛选器(Topic Filter)
一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
-
负载(Payload)
个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
-
负载(Payload)
消息订阅者所具体接收的内容。