物聯(lián)網(wǎng)開發(fā)技術(shù)多種多樣,開發(fā)形式也不可勝數(shù),今天我們就開分享當(dāng)下非常流行的物聯(lián)網(wǎng)通信協(xié)議MQTT,但凡現(xiàn)在的云服務(wù)商的物聯(lián)網(wǎng)設(shè)備接入服務(wù)都是支持MQTT方式接入的,比如阿里云、京東云、騰訊云等巨頭云服務(wù)商都有提供物聯(lián)網(wǎng)設(shè)備管理服務(wù),也都是支持MQTT方式接入、管理物聯(lián)網(wǎng)設(shè)備的。
什么是MQTT?
MQTT(消息隊列遙測傳輸)是ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議。它工作在 TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計的發(fā)布/訂閱型消息協(xié)議,為此,它需要一個消息中間件 。
MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中,如:機(jī)器與機(jī)器(M2M)通信和物聯(lián)網(wǎng)(IoT)。其在,通過衛(wèi)星鏈路通信傳感器、偶爾撥號的醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。
未來幾年,MQTT的應(yīng)用會越來越廣,值得關(guān)注。作為物聯(lián)網(wǎng)開發(fā)的我們當(dāng)然也要對這種協(xié)議進(jìn)行了解和使用。
MQTT有哪些特點?
MQTT協(xié)議是為大量計算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計的協(xié)議,它具有以下主要的幾項特性:
1、使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應(yīng)用程序耦合;
2、對負(fù)載內(nèi)容屏蔽的消息傳輸;
3、使用 TCP/IP 提供網(wǎng)絡(luò)連接;
4、有三種消息發(fā)布服務(wù)質(zhì)量:
“至多一次”,消息發(fā)布完全依賴底層 TCP/IP 網(wǎng)絡(luò)。會發(fā)生消息丟失或重復(fù)。這一級別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無所謂,因為不久后還會有第二次發(fā)送。
“至少一次”,確保消息到達(dá),但消息重復(fù)可能會發(fā)生。
“只有一次”,確保消息到達(dá)一次。這一級別可用于如下情況,在計費(fèi)系統(tǒng)中,消息重復(fù)或丟失會導(dǎo)致不正確的結(jié)果。
5、小型傳輸,開銷很?。ü潭ㄩL度的頭部是 2 字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;
6、使用 Last Will 和 Testament 特性通知有關(guān)各方客戶端異常中斷的機(jī)制。
MQTT協(xié)議消息中間件產(chǎn)品?
目前有很多的MQTT消息中間件服務(wù)器,如下,都是MQTT協(xié)議的服務(wù)器端的實現(xiàn)。
IBM Websphere
MQ Telemetry
IBM MessageSight
Mosquitto
Eclipse Paho
emqttd Xively
m2m.io
webMethods
Nirvana Messaging
RabbitMQ
Apache ActiveMQ
Apache Apollo
Moquette
HiveMQ
Mosca
Litmus Automation Loop
JoramMQ
ThingMQ
VerneMQ
MQTT協(xié)議實現(xiàn)方式
實現(xiàn)MQTT協(xié)議需要客戶端和服務(wù)器端通訊完成,在通訊過程中,MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時是訂閱者。
MQTT傳輸?shù)南⒎譃椋褐黝}(Topic)和負(fù)載(payload)兩部分:
(1)Topic,可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會收到該主題的消息內(nèi)容(payload);
(2)payload,可以理解為消息的內(nèi)容,是指訂閱者具體要使用的內(nèi)容
MQTT協(xié)議中的訂閱、主題、會話
a、訂閱(Subscription)
訂閱包含主題篩選器(Topic Filter)和最大服務(wù)質(zhì)量(QoS)。訂閱會與一個會話(Session)關(guān)聯(lián)。一個會話可以包含多個訂閱。每一個會話中的每個訂閱都有一個不同的主題篩選器。
b、會話(Session)
每個客戶端與服務(wù)器建立連接后就是一個會話,客戶端和服務(wù)器之間有狀態(tài)交互。會話存在于一個網(wǎng)絡(luò)之間,也可能在客戶端和服務(wù)器之間跨越多個連續(xù)的網(wǎng)絡(luò)連接。
c、主題名(Topic Name)
連接到一個應(yīng)用程序消息的標(biāo)簽,該標(biāo)簽與服務(wù)器的訂閱相匹配。服務(wù)器會將消息發(fā)送給訂閱所匹配標(biāo)簽的每個客戶端。
d、主題篩選器(Topic Filter)
一個對主題名通配符篩選器,在訂閱表達(dá)式中使用,表示訂閱所匹配到的多個主題。
e、負(fù)載(Payload)
消息訂閱者所具體接收的內(nèi)容。
MQTT協(xié)議中的方法
MQTT協(xié)議中定義了一些方法(也被稱為動作),來于表示對確定資源所進(jìn)行操作。這個資源可以代表預(yù)先存在的數(shù)據(jù)或動態(tài)生成數(shù)據(jù),這取決于服務(wù)器的實現(xiàn)。通常來說,資源指服務(wù)器上的文件或輸出。主要方法有:
(1)Connect。等待與服務(wù)器建立連接。
(2)Disconnect。等待MQTT客戶端完成所做的工作,并與服務(wù)器斷開TCP/IP會話。
(3)Subscribe。等待完成訂閱。
(4)UnSubscribe。等待服務(wù)器取消客戶端的一個或多個topics訂閱。
(5)Publish。MQTT客戶端發(fā)送消息請求,發(fā)送完成后返回應(yīng)用程序線程。
電話:0951-5988193(8:30-17:30)
24H:139 9501 2209、153 7895 1724
地址:銀川市興慶區(qū)鳳凰南街鳳凰商務(wù)樓503室
Copyright @ 昱皓軟件. YUHAO.LTD 寧ICP備16000928號