簡(jiǎn)介
MQTT全稱Message Queuing Telemetry Transport,中文名消息隊(duì)列遙測(cè)傳輸協(xié)議,是一個(gè)基于TCP/IP、發(fā)布訂閱模式的輕量級(jí)應(yīng)用層協(xié)議。
MQTT是以服務(wù)端-客戶端的形式,以發(fā)布訂閱模式來(lái)進(jìn)行消息傳遞的。通訊過(guò)程需要三種角色:發(fā)布者publish、代理broker、消費(fèi)者subscribe。其中,代理是服務(wù)端,發(fā)布者與消費(fèi)者都是客戶端。
MQTT傳輸?shù)膱?bào)文分為T(mén)opic和payload,其中Topic就是客戶端訂閱的主題,payload為訂閱該主題后收到的內(nèi)容。主題采用的是分層結(jié)構(gòu),用#和+就能指定多個(gè)主題。比如 /Sensor/temperature/#表示所有房間的溫度,/Sensor/+/room1表示room1中的所有傳感器的值。
QOS在MQTT中有三個(gè)等級(jí):QoS0,QoS1,QoS2。分為表示最多發(fā)一次,至少發(fā)一次,只發(fā)一次。
????????QoS0:遵循TCP/IP盡力發(fā)布原則,消息要么達(dá)到一次中介,要么沒(méi)有達(dá)到;
? ? ? ? QoS1:中介一段時(shí)間內(nèi)不返回PUBACK,發(fā)布者會(huì)一直發(fā);
? ? ? ? QoS2:中介收到消息后,會(huì)給發(fā)布者發(fā)送PUBREC,發(fā)布者會(huì)向中介發(fā)送PUBREL,然后中介會(huì)向發(fā)布者發(fā)送PUBCOMP,接下來(lái)根據(jù)訂閱者指定的QoS向訂閱者傳遞消息。