Linux mqtt服務器搭建:
- mqtt服務器依賴java環境,先從這個網址下載java的JDK文件
下載鏈接
注意不要下載錯了,選擇好自己的系統,千萬不要下載成Demos文件
我這裏選擇的是:
- 解壓出來,將解壓的 jdk1.8.0_144文件夾放到 /usr/local
- 修改環境變量在 ~/.bashrc 或者 /etc/profile最後加上
當有了java命令時,java環境就搭建好了(記得把bin下所有的文件加上可執行權限) - 從這個網站下載apache-apollo文件
下載鏈接 注意選擇好自己的系統
我這裏選擇的是:
- 解壓出來 :cd apache-apollo-1.7.1/bin/
- 創建一個 mybroker:
./apollo create mybroker
- 進入裏面執行文件:
cd mybroker/bin
./apollo-broker run
到這裏服務器就創建好了,也可以讓這個服務器後臺運行
./apollo-broker run &
如果想要修改mqtt連接的端口號,在mybroker/etc/apollo.xml這個文件中,mqtt是通過tcp連接的,所以只需要改連接tcp的端口號就行
Windows mqtt服務器搭建:
-
運行jdk1.8.0_20164.msi 下載鏈接
-
下載apache-apollo-1.7.1文件 下載鏈接(Windows版的)
我這裏選擇的是:
-
管理員身份運行cmd,進入到 apache-apollo-1.7.1/bin 中 執行命令:
apollo create myapollo C:\apache-apollo\broker
創建完之後c盤會出現apache-apollo這個文件夾
- 進入C:\apache-apollo\broker\bin目錄下,執行如下命令:
apollo-broker run
- 打開http://127.0.0.1:61680/,用戶名admin, 密碼password 服務器就搭建好了 參考鏈接
Linux mqtt客戶端創建:
mqtt客戶端使用方法,下載 paho.mqtt.c-master源碼,編譯成動態庫,直接調用動態庫和頭文件
paho.mqtt.c-master依賴 OpenSSL庫
-
先下載最新OpenSSL 下載鏈接
-
交叉編譯:
-
在 install 目錄中,會生成很多頭文件和庫
-
接下來再交叉編譯 paho.mqtt.c下載地址
-
交叉編譯(注意路徑,編譯器一定要選擇自己的)
-
然後在build下的output下就能看到我們要使用的動態庫了
使用:
源文件中加入 MQTTClient.h頭文件,鏈接這三個動態庫就可以創建MQTT客戶端了參考鏈接
Windows mqtt客戶端:
我直接使用的是mqtt客戶端的一個小工具,非常好用下載鏈接
使用mqtt特別注意
MQTT掉線問題:
- 很有可能是連接時沒有輸入賬號密碼
- 網絡問題
MQTT Client ID一定要唯一
MQTT的回調接受函數一定要返回1,不然可能會重複收到信息。
MQTT最重要的兩個理念:QOS TOPIC
QoS 0:“最多一次”,消息發佈完全依賴底層 TCP/IP 網絡。分發的消息可能丟失或重複。例如,這個等級可用於環境傳感器數據,單次的數據丟失沒關係,因爲不久後還會有第二次發送。
QoS 1:“至少一次”,確保消息可以到達,但消息可能會重複。
QoS 2:“只有一次”,確保消息只到達一次。例如,這個等級可用在一個計費系統中,這裏如果消息重複或丟失會導致不正確的收費。
TOPIC,只有訂閱了這個topic,你才能收到關於這個topic的所有消息。
topic有兩個常用的通配符 “+” 和 “#”
- "mode/+“如果訂閱了這種topic,只是表示當前一層的。從當前的第二層就不行了。例如發送者發送"mode/op”,就可以收到。但是發送者發送"mode/op/type"就收不到了。
- "mode/#“如果訂閱了這種topic,表示當前本身和下面子層所有。例如無論發送者發送"mode/op”,還是發送"mode/op/type"都可以收到信息。