点击上方[物联网思考],选择置顶,第一时间查看物联网分享!
1、前言
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
2、 架构
mqtt的典型架构是Broker(Server)和Client,也就是服务器和客户端; 服务器是消息代理者; 客户端既可以是消息发布者(Publish),也可以是订阅者(Subscribe)。 这里举一个不是特别恰当的例子:微博,只有你关注(订阅)了某个人,某个人发布(发布)博文(消息)后,微博(代理者/服务器)就会第一时间给你推送。
MQTT传输的消息分为:主题(Topic)和负载(Payload)两部分;Topic:可以理解为消息的类型; Payload:可以理解为消息的内容,是指订阅者具体要使用的内容;
MQTT的消息质量:QoS 0,QoS 1和 QoS 2。
QoS 0:最多分发一次。消息的传递完全依赖底层的TCP/IP网络,协议里没有定义应答和重试,消息要么只会到达服务端一次,要么根本没有到达。 QoS1:至少分发一次。服务器的消息接收由PUBACK消息进行确认,如果通信链路或发送设备异常,或者指定时间内没有收到确认消息,发送端会重发这条在消息头中设置了DUP位的消息。 QoS 2:只分发一次。这是最高级别的消息传递,消息丢失和重复都是不可接受的,使用这个服务质量等级会有额外的开销。
3、MQTT版本
MQTT-SN v1.2 MQTT 3.1 MQTT 3.1.1 MQTT 5 其中MQTT3.1和MQTT3.1.1是目前最常用的版本。
4、MQTT Servers
Ably MQTT Broker Apache ActiveMQ :开源 Mosquitto:开源,对应的测试服务器(https://test.mosquitto.org/) RabbitMQ:开源 EMQ :开源,国内一家公司开发的
5、MQTT Client
嵌入式C 客户端:https://os.mbed.com/teams/mqtt/code/MQTTPacket/ ESP8266/ESP32的客户端:https://github.com/tuanpmt/esp_mqtt 基于elang的客户端:https://github.com/emqx/emqtt 基于go的客户端:https://github.com/eclipse/paho.mqtt.golang
6、调试工具
MQTT.fx:http://mqttfx.jensd.de/index.php/download MQTT X:https://mqttx.app/
7、其他资料
MQTT中文网:http://mqtt.p2hp.com/ MQTT官网:https://mqtt.org/
——————END——————