MQTT協議實踐

皮卡皮~發表於2021-01-02

一、MQTT簡介

MQTT(Message Queuing Telemetry Transport,訊息佇列遙測傳輸協議),是IBM推出的一種針對移動終端裝置的基於TCP/IP的釋出/預訂協議,可以連線大量的遠端感測器和控制裝置:

輕量級的訊息訂閱和釋出(publish/subscribe)協議
建立在TCP/IP協議之上
1.1 MQTT的特點:
(1)MQTT是一個基於客戶端-伺服器的訊息釋出/訂閱傳輸協議。
(2)MQTT協議是輕量、簡單、開放和易於實現的,這些特點使其使用於在物聯網、小型裝置、移動應用等方面應用。
(3)MQTT可以以極少的程式碼和有限的頻寬,為連線遠端裝置提供實時可靠的訊息服務
使用MQTT的訊息釋出服務質量

(4)“至多一次”,訊息釋出完全依賴底層 TCP/IP 網路。會發生訊息丟失或重複。這一級別可用於如下情況,環境感測器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次傳送。
(5)“至少一次”,確保訊息到達,但訊息重複可能會發生。
(6)“只有一次”,確保訊息到達一次。這一級別可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。
1.2 MQTT的三種角色::
(1)Broker代理:很多人理解為中介軟體,當然可以這樣子認為。他就是一箇中介軟體。用於處理資訊併傳送到相應的訂閱者。
(2)釋出者:用於釋出資訊到代理上面。注意:釋出者也可以是訂閱者。
(3)訂閱者:就是用於接受資訊的客戶端。
1.3 由於物聯網的環境是非常特別的,所以MQTT遵循以下設計原則:
(1)精簡,不新增可有可無的功能。
(2)釋出/訂閱(Pub/Sub)模式,方便訊息在感測器之間傳遞。
(3)允許使用者動態建立主題,零運維成本。
(4)把傳輸量降到最低以提高傳輸效率。
(5)把低頻寬、高延遲、不穩定的網路等因素考慮在內。
(6)支援連續的會話控制。
(7)理解客戶端計算能力可能很低。
(8)提供服務質量管理。
(9)假設資料不可知,不強求傳輸資料的型別與格式,保持靈活性。

二、使用Apollo搭建MQTT伺服器

2.1下載Apache Apoll
https://pan.baidu.com/s/1c2NJmJe
在這裡插入圖片描述

2.2解壓之後的檔案如圖所示
在這裡插入圖片描述
2.3配置java的jdk
將java路徑新增到系統變數中

在這裡插入圖片描述

2.4建立apollo使用者
在cmd命令列視窗中切換到剛剛解壓的bin目錄下
執行命令:

apollo.cmd create apollogb

注:(apollogb是自己取的名字)。
在這裡插入圖片描述
在解壓後的bin目錄下就會建立一個使用者:
在這裡插入圖片描述

2.5開啟apollo服務
在cmd視窗中的建立使用者的bin目錄下執行如下命令:

apollo-broker.cmd run

但是這種方式cmd視窗不能關掉,關掉之後,就無法進行訪問。
如圖所示:
在這裡插入圖片描述
在這裡插入圖片描述
至此,MQTT伺服器已經搭建完成。

三、建立一個客戶端進行連線

3.1下載客戶端
https://pan.baidu.com/s/1mi5mdRi

在這裡插入圖片描述

3.2解壓之後
開啟資料夾,點選執行paho應用程式
在這裡插入圖片描述

3.3新增連線並設定
在這裡插入圖片描述
輸入使用者名稱和密碼:
在這裡插入圖片描述
連線成功後,伺服器上會出現如下顯示
在這裡插入圖片描述

四、訊息釋出與訂閱

4.1客戶端1:訂閱hello主題
在這裡插入圖片描述

4.2客戶端2:釋出hello主題

在這裡插入圖片描述
4.3在客戶端2釋出hello主題後,客戶端1就會收到客戶端2傳送出來的主題中的內容。
在這裡插入圖片描述
至此,MQTT協議的簡單實踐就完成了

五、參考資料

https://blog.csdn.net/qq_43279579/article/details/111873008
https://zhuanlan.zhihu.com/p/20888181

相關文章