MQTT協議

Linux mqtt服務器搭建:

  1. mqtt服務器依賴java環境,先從這個網址下載java的JDK文件
    下載鏈接
    注意不要下載錯了,選擇好自己的系統,千萬不要下載成Demos文件
    我這裏選擇的是:
    在這裏插入圖片描述
  2. 解壓出來,將解壓的 jdk1.8.0_144文件夾放到 /usr/local
  3. 修改環境變量在 ~/.bashrc 或者 /etc/profile最後加上
    在這裏插入圖片描述當有了java命令時,java環境就搭建好了(記得把bin下所有的文件加上可執行權限
  4. 從這個網站下載apache-apollo文件
    下載鏈接 注意選擇好自己的系統
    我這裏選擇的是:
    在這裏插入圖片描述
  5. 解壓出來 :cd apache-apollo-1.7.1/bin/
  6. 創建一個 mybroker:
./apollo create mybroker
  1. 進入裏面執行文件:
cd  mybroker/bin            
 ./apollo-broker run

到這裏服務器就創建好了,也可以讓這個服務器後臺運行

./apollo-broker run &

如果想要修改mqtt連接的端口號,在mybroker/etc/apollo.xml這個文件中,mqtt是通過tcp連接的,所以只需要改連接tcp的端口號就行

Windows mqtt服務器搭建:

  1. 運行jdk1.8.0_20164.msi 下載鏈接

  2. 下載apache-apollo-1.7.1文件 下載鏈接(Windows版的)
    我這裏選擇的是:
    在這裏插入圖片描述

  3. 管理員身份運行cmd,進入到 apache-apollo-1.7.1/bin 中 執行命令:

apollo create myapollo C:\apache-apollo\broker

創建完之後c盤會出現apache-apollo這個文件夾

  1. 進入C:\apache-apollo\broker\bin目錄下,執行如下命令:
apollo-broker run
  1. 打開http://127.0.0.1:61680/,用戶名admin, 密碼password 服務器就搭建好了 參考鏈接

Linux mqtt客戶端創建:

mqtt客戶端使用方法,下載 paho.mqtt.c-master源碼,編譯成動態庫,直接調用動態庫和頭文件
paho.mqtt.c-master依賴 OpenSSL庫

  1. 先下載最新OpenSSL 下載鏈接

  2. 交叉編譯:
    在這裏插入圖片描述在這裏插入圖片描述

  3. 在 install 目錄中,會生成很多頭文件和庫

  4. 接下來再交叉編譯 paho.mqtt.c下載地址

  5. 交叉編譯(注意路徑,編譯器一定要選擇自己的
    在這裏插入圖片描述
    在這裏插入圖片描述

  6. 然後在build下的output下就能看到我們要使用的動態庫了
    在這裏插入圖片描述
    使用:
    源文件中加入 MQTTClient.h頭文件,鏈接這三個動態庫就可以創建MQTT客戶端了參考鏈接

Windows mqtt客戶端:

我直接使用的是mqtt客戶端的一個小工具,非常好用下載鏈接

使用mqtt特別注意

MQTT掉線問題:

  1. 很有可能是連接時沒有輸入賬號密碼
  2. 網絡問題

MQTT Client ID一定要唯一
MQTT的回調接受函數一定要返回1,不然可能會重複收到信息。

MQTT最重要的兩個理念:QOS TOPIC
QoS 0:“最多一次”,消息發佈完全依賴底層 TCP/IP 網絡。分發的消息可能丟失或重複。例如,這個等級可用於環境傳感器數據,單次的數據丟失沒關係,因爲不久後還會有第二次發送。
QoS 1:“至少一次”,確保消息可以到達,但消息可能會重複。
QoS 2:“只有一次”,確保消息只到達一次。例如,這個等級可用在一個計費系統中,這裏如果消息重複或丟失會導致不正確的收費。

TOPIC,只有訂閱了這個topic,你才能收到關於這個topic的所有消息。
topic有兩個常用的通配符 “+” 和 “#”

  1. "mode/+“如果訂閱了這種topic,只是表示當前一層的。從當前的第二層就不行了。例如發送者發送"mode/op”,就可以收到。但是發送者發送"mode/op/type"就收不到了。
  2. "mode/#“如果訂閱了這種topic,表示當前本身和下面子層所有。例如無論發送者發送"mode/op”,還是發送"mode/op/type"都可以收到信息。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章