【原創】MQTT服務端搭建-最快方式驗證自己開發的客戶端
文章首發於同名微信公眾號:DigCore
歡迎關注同名微信公眾號:DigCore,及時獲取最新技術博文。
在上一篇文章《【原創】MQTT客戶端搭建-最清晰的MQTT協議架構》中提到了MQTT.fx工具作為客戶端使用時,使用了該工具官方提供的伺服器m2m.eclipse.org: 1883,現在準備在本地主機搭建一個MQTT伺服器。
在GitHub網站上MQTT專案裡,也有很多關於伺服器的介紹,各類伺服器平臺列表:
https://github.com/mqtt/mqtt.github.io/wiki/brokers
關於MQTT伺服器的搭建已經有很多人蔘與進來了,不過各個伺服器未必安裝的都如此順利,總結近期網上搜尋到的資料:
MQTTRoute,本站驗證結果:有30天試用期。
MQTTnet,使用者在部落格發表驗證結果:MQTTnet在VS2015打不開且客戶端示例不可用,屬於C++源專案。
該使用者部落格地址:
https://www.cnblogs.com/zeroes/p/mqttnet.html
Mosquitto,本站驗證結果:不可下載win7-64安裝包。
使用者在部落格發表驗證結果:Win10 64位系統,安裝報錯或缺少dll檔案,不能使用。
該使用者部落格地址:
https://blog.csdn.net/yannanxiu/article/details/52703946
對比以上這些別人的經驗後,最後選擇安裝Apache Apollo。
軟體下載
伺服器下載地址:
http://activemq.apache.org/apollo/download.html
軟體安裝與配置
下載了軟體包後解壓到要放置的目錄(注:不允許有中文),啟動CMD命令列工具。
CMD命令列工具下切換到目錄
.. \apache-apollo-1.7.1-windows-distro\apache-apollo-1.7.1\bin
下,執行apollocreate digcore指令,如下圖:
出現報錯資訊:
Warning: JAVA_HOME environmentvariable is not set.
Error: missing `server' JVM at`C:\Program Files (x86)\Java\jre1.8.0_161\bin
ver\jvm.dll'.
Please install or use the JRE or JDK that contains these missingcomponents.
這說明電腦還未配置相關的環境,需要安裝JDK,下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1.下載並安裝後,配置JDK到系統環境變數
2.新建系統變數JAVA_HOME,設定變數值C:\Program Files\Java\jdk1.8.0_181
3.新建PATH(加入列表已存在直接編輯),新增變數值
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,注意新增變數值時候不要刪除原本的資訊,用分號;隔開
4.新建CLASSPATH,設定變數值
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
5.在CMD命令列輸入java –version驗證java環境的正確配置。
JDK環境引數配置完成。
建立伺服器並驗證
建立一個MQTT代理伺服器,命令列切換到bin目錄下後執行apollocreate digcore
成功建立一個MQTT代理伺服器後
切換目錄到新建立的MQTT代理伺服器資料夾下的bin目錄:..\apache-apollo-1.7.1\bin\digcore\bin
執行指令apollo-broker.cmd run 啟動伺服器
命令列出現了代理伺服器的啟動資訊,開啟瀏覽器,輸入命令列中顯示的IP(一般自己電腦本機)和埠號,即可訪問
預設配置:使用者名稱admin,密碼password
使用MQTT.fx客戶端嘗試連線伺服器
在MQTT.fx中填寫伺服器資訊,這裡需要注意伺服器接受的連線埠號,此案例中TCP連線時支援的是61613埠。
MQTT.fx客戶端連線成功後,伺服器控制檯的Connectors選項卡內有新的連線裝置接入資訊:
再開啟一個MQTT.fx客戶端,設定第二個MQTT.fx客戶端時,需要留意把ClientID設定成不同於上一個客戶端即可。
一起連入伺服器後的效果:
以上完成了MQTT伺服器在本地主機的搭建過程。
作為應用開發者來說,側重點如果是在客戶端的設計開發,則對伺服器的選擇就要考慮便捷性和可靠性。
更多技術乾貨分享,敬請關注微信公眾號:DigCore
或者掃碼關注公眾號