mqtt服務器搭建以及客戶端Paho安裝使用

一、 即時通訊協議-mqtt

Message Queuing Telemetry Transport ,中文 : 消息隊列遙測傳輸

mqtt服務器搭建以及客戶端Paho安裝使用

1. 主要特點

  • 使用發佈/訂閱消息模式,提供一對多的消息發佈,解除應用程序耦合
  • 對負載內容屏蔽的消息傳輸
  • 使用 TCP/IP 提供網絡連接
  • 有三種消息發佈服務質量: “至多一次”:適用消息頻繁發且丟失一兩條不影響的場景,如:環境傳感器數據,丟失一次讀記錄無所謂,因為不久後還會有第二次發送。 “至少一次”:確保消息到達,但消息重複可能會發生 “只有一次”:確保消息到達一次。優點是確保消息送達且有且僅有一次,缺點是系統開銷大.
  • 小型傳輸,開銷很小
  • 使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制

2. mqtt broker

是基於MQTT協議的服務端實現,即mqtt服務器

3. mqtt client

是基於MQTT協議的客戶端實現。

二、 mqtt服務器-EMQ安裝

官網下載 https://www.emqx.io/cn/downloads#broker

mqtt服務器搭建以及客戶端Paho安裝使用

下載完成後(不要下載企業版的),解壓壓縮包,打開 Windows 命令行窗口,cd 到程序bin目錄(路徑不能包含中文或者空格,不然可能會出錯), 啟動 EMQ X:

<code>G:\\emqx-windows-v3.2.3\\emqx\\bin>emqx start

G:\\emqx-windows-v3.2.3\\emqx>cd bin

G:\\emqx-windows-v3.2.3\\emqx\\bin>emqx_ctl status
Node '[email protected]' is started
emqx 3.2.3 is running

G:\\emqx-windows-v3.2.3\\emqx\\bin>/<code>
mqtt服務器搭建以及客戶端Paho安裝使用

瀏覽器訪問:http://127.0.0.1:18083/#/ ,進入控制檯可視化頁面,默認用戶名/密碼 admin/public

三、 使用Paho進行測試

1. 下載

mqtt 客戶端圖形調試工具 Eclipse Paho Java所有版本下載地址https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.0.2/

2. 簡單使用

mqtt服務器搭建以及客戶端Paho安裝使用

  • 準確輸入IP,點擊連接
  • “訂閱”面板,新增一條主題並訂閱;“發佈”面板,填寫需要發佈的消息併發布
  • 服務質量: 0 至多一次,1 至少一次 ,2 剛好一次 。具體根據項目需求決定,比如設備不停推送消息,偶爾漏一條不要緊的選擇0,希望每條消息都能收到且不是那種一點差錯都不能出的(如涉及到錢,重要信息) 那麼選擇1, 不能出一點差錯的選擇2。注: 2的開銷最大,若不是必須不選擇2。

另外,也可以用使用EMQ中Websocket工具,發佈一條主題為test的信息。

mqtt服務器搭建以及客戶端Paho安裝使用

發送後Paho客戶端便會接收到發送的信息

mqtt服務器搭建以及客戶端Paho安裝使用

3. 遺願調試

關於遺願的作用: 當連接MQTT服務器時設置了遺願的客戶端異常退出,心跳超時後MQTT服務器會將該客戶的遺願消息發佈出去,訂閱了該遺願消息的客戶端會收到通知。總的來說,就是設置(app、設備)等客戶異常退出(比如,斷網) 通知應用服務器的作用 (這個通知會有延遲,延遲時間和心跳有關)。

實際項目場景: 應用app服務器 監聽了 主題/logout 的消息, 客戶端app 連接MQTT服務器時 設置了遺願 主題:/logout , 消息內容 {當前app用戶的id} , 當用戶app網絡斷開,過了一段時間後,MQTT服務器發現這個連接的APP客戶端心跳停止很久了(和超時時間有關) ,認為app客戶端已經異常退出了,然後將其連接時設置的遺願消息發佈出來主題:/logout。服務器由於已經訂閱了主題/logout的消息,所以能收到這條消息,消息內容中是app用戶的id,然後服務器就可以做一些下線處理了。

mqtt服務器搭建以及客戶端Paho安裝使用

mqtt服務器搭建以及客戶端Paho安裝使用


分享到:


相關文章: