MQTT协议属于轻量级信息传输协议,专用于受限环境,如低带宽或者不可靠网络情况而设计。主要广泛用于物联网之间的设备通讯。
MQTT轻量级设计目标是为了尽量减少网络带宽和设备资源的消耗,非常适用于嵌入式设备和物联网应用。
MQTT的发布/订阅通信模型,实现设备可以通过主题来通信,发布者直接把信息发布在特定主题中,订阅者就可以接受自己感兴趣的主题信息;消息代理,则通过中央消息代理来转发消息,发布者和订阅者不能直接通信,仅通过代理进行传递消息。
MQTT的主要特性QoS等级,MQTT提供了三种服务质量等级,可以保证消息的可靠传输。QoS 0:最多一次,消息传输无法保证到达。QoS 1:至少一次,消息可能出现重复传输,但至少会到达一次。QoS 2:只有一次,消息仅传输一次且一定会到达。持久会话,指的是可以支持长久会话,当客户端断开连接重新连接也可以继续接受到未接受的消息。
遗嘱消息,用户端可以设置遗嘱消息,当异常断开连接时,代理会发布遗嘱消息提醒其他订阅者;保留消息,发布者可以发布保留消息,代理会保存最后一条保留消息,新订阅者在订阅这个主题时,会第一时间阅读到保留消息。
物联网设备应用场景中,MQTT常常用于物联网设备之间的通信,如传感器、智能家居、穿戴设备等。移动应用中,MQTT由于轻量级和高效性的优势,可以用于低延迟、高时效的移动应用。遥测和远程监控,可以通过远程监控和遥测系统,利用低带宽的通信链路传输数据。
协议工作流程的连接, 用户可以通过CONNECT消息与代理进行连接。发布是用户端通过PUBLISH消息把消息发布到注意。订阅是用户端把SUBSCRIBE消息订阅主题。代理通过主题的消息发给订阅者。断开连接是用户端把DISCONNECT消息与代理断开连接。
Eclipse Mosquitto,一个开源的MQTT代理,常常用于各大测试和生产环境。HiveMQ,属于商业型的MQTT代理,提高了其可用性和扩展性,非常适合企业级应用。