最近最火的技术有:人工智能、区块链和物联网。笔者今天就用三分钟的时间,给大家介绍一下物联网中一个非常基础且常用的流行协议——MQTT。为什么要使用MQTT协议?MQTT(英文全称,MessageQueueTelemetryTransport),中译为遥测传输协议:主要提供订阅/发布模式,更简单、轻量、易用,针对受限环境(低带宽、高网络延迟,网络通信不稳定),属于物联网(InternetofThings)的一种传输协议。设计理念是开放、简单、轻量级、易于实现。这些特性使其适用于受限环境。例如但不限于:特别适用于昂贵的网络、低带宽、不可靠的环境。可以在处理器和内存资源有限的嵌入式设备中运行。使用发布/订阅消息模式提供一对多的消息发布,从而解耦应用程序。使用TCP/IP提供网络连接。提供LastWill和Testament特性,通知相关方客户端异常中断的机制。对于消息中间件,估计大家要关心的就是消息的可靠性,也就是消息发布的服务质量。幸运的是,MQTT支持三种消息发布服务质量(QoS):“至多一次”(QoS==0),消息发布完全依赖于底层的TCP/IP网络。可能会发生消息丢失或重复。这个级别可以用在以下几种情况,环境传感器数据,一条读记录丢了也没关系,因为近期会有第二次发送。“至少一次”(QoS==1),保证消息到达,但可能会出现消息重复。“Onlyonce”(QoS==2),确保消息到达一次。此级别可用于重复或丢失消息可能导致计费系统产生错误结果的情况。开销很小的小传输(固定长度标头为2字节)和协议交换被最小化以减少网络流量。协议规范版本MQTT协议***的三个版本分别是:3.1.1、3.1.0和5.0协议。3.1.0的规范如下:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html3.1.1的规范如下:http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc3987180295.0的规范如下:http://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html其中,5.0只是一个提案(2017年7月13日发布的提案草案),所以本文暂时不涉及MQTT5.0协议,考虑到目前主流且成熟的MQTT协议。应用都是基于MQTT3.1.1协议,所以笔者还是以MQTT3.1.1协议为基准与大家分享。只要遇到了这次会议,其他的事情自然会齐头并进。需要注意的是,MQTT3.1.0和3.1.1规范之间仍然存在细微差别。例如,在变量头中,在3.1.0规范中,关键字是“MQISdP”。支持MQTT协议的消息中间件产品?目前有很多MQTT消息中间件服务器,如下,都是MQTT协议的服务端实现。IBMWebsphereMQTelemetryIBMMessageSightMosquittoEclipsePahoemqttdXivelyM2M.iowebMethodsNirvanaMessagingRabbitMQApacheActiveMQApacheApolloMoquetteHiveMQMoscaLitmusAutomationLoopJoramMQThingMQVerneMQ支持一对多消息订阅Topic)消息订阅,是一个MQTT客户端,发送特定主题的消息,可以支持多个订阅者同时订阅。如下图,笔记本和手机都订阅了消息主题温度的消息。当温度传感器发布温度信息时(当前温度为21℃),笔记本和手机都会收到温度传感器发布的温度信息。MQTT客户端的语言支持支持目前市面上所有的主流语言。JavaJavascriptC/C++PythonRubyObjective-C...
