兩款常用的 MQTT 調(diào)試工具
前言
預(yù)備知識(shí)
MQTTBox
介紹
下載
入門使用
負(fù)載測(cè)試
前言
預(yù)備知識(shí)
MQTTBox
介紹
下載
入門使用
負(fù)載測(cè)試
MQTT.fx
介紹
下載
入門使用
JS 腳本
前言
我們可以使用 MQTT 客戶端來測(cè)試 MQTT 的通訊功能,這里介紹常用的兩款工具 MQTTBox 和 MQTT.fx 。
預(yù)備知識(shí)
MQTT(MQ Telemetry Transport)協(xié)議,是 IBM 公司在 1999 年開發(fā)的輕量級(jí)網(wǎng)絡(luò)協(xié)議,它有三個(gè)主要特點(diǎn):
采用二進(jìn)制的消息內(nèi)容編碼格式,所以二進(jìn)制數(shù)據(jù)、JSON 和圖片等負(fù)載內(nèi)容都可以方便傳輸。
協(xié)議頭很緊湊,協(xié)議交互也簡(jiǎn)單,保證了網(wǎng)絡(luò)傳輸流量很小。
支持 3 種 QoS(Quality of Service,服務(wù)質(zhì)量)級(jí)別,便于應(yīng)用根據(jù)不同的場(chǎng)景需求靈活選擇。
這三個(gè)特點(diǎn),讓 MQTT 協(xié)議非常適合計(jì)算能力有限、網(wǎng)絡(luò)帶寬低、信號(hào)不穩(wěn)定的遠(yuǎn)程設(shè)備,所以它成為了物聯(lián)網(wǎng)系統(tǒng)事實(shí)上的網(wǎng)絡(luò)協(xié)議標(biāo)準(zhǔn)。
MQTT 相關(guān)概念:
Publisher(發(fā)布者):消息的發(fā)出者,負(fù)責(zé)生產(chǎn)數(shù)據(jù)。發(fā)布者發(fā)送某個(gè)主題的數(shù)據(jù)給經(jīng)紀(jì)人,發(fā)布者不知道訂閱者。
Subscriber(訂閱者):消息的訂閱者,訂閱經(jīng)紀(jì)人管理的某個(gè)或者某幾個(gè)主題。
Broker(經(jīng)紀(jì)人):當(dāng)經(jīng)紀(jì)人接收到某個(gè)主題的數(shù)據(jù)時(shí),將數(shù)據(jù)發(fā)送給這個(gè)主題的所有訂閱者。
Topic(主題):可以理解為消息隊(duì)列中的路由,訂閱者訂閱了主題之后,就可以收到發(fā)送到該主題的消息。
Payload(負(fù)載);可以理解為發(fā)送消息的內(nèi)容。
QoS(消息質(zhì)量):全稱 Quality of Service,即消息的發(fā)送質(zhì)量,主要有 QoS 0、QoS 1、QoS 2三個(gè)等級(jí),下面分別介紹下:
QoS 0(Almost Once):至多一次,只發(fā)送一次,會(huì)發(fā)生消息丟失或重復(fù);
QoS 1(Atleast Once):至少一次,確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生;
QoS 2(Exactly Once):只有一次,確保消息只到達(dá)一次。
MQTTBox
介紹
協(xié)議支持:
TCP(tcp)
TLS(tls)
Web Sockets(ws)
Secure Web Sockets(wss)
特點(diǎn):
支持的協(xié)議全面,支持 WebSocket
界面美觀但是簡(jiǎn)陋
支持發(fā)布和訂閱多個(gè)主題
支持主題的單級(jí)和多級(jí)訂閱
支持 MQTT 負(fù)載測(cè)試
自定義訂閱和發(fā)送比例
支持查看每個(gè)主題已發(fā)布/已訂閱消息的歷史記錄
支持MQTT負(fù)載測(cè)試
支持并發(fā)測(cè)試實(shí)例,為同一個(gè)測(cè)試用例創(chuàng)建最多10個(gè)實(shí)例
實(shí)時(shí)查看測(cè)試進(jìn)程
測(cè)試結(jié)果能以圖表展示
沒有日志模塊,沒有腳本支持,沒有 Broker 狀態(tài)查看
payloads 輸出相對(duì)簡(jiǎn)陋
官網(wǎng)地址:https://github.com/workswithweb/MQTTBox
下載
這款軟件支持在 Windows、Mac 和 Linux 上面運(yùn)行,我們到其官網(wǎng)選擇合適的版本下載安裝即可。
-:http://workswithweb.com/mqttbox.html
入門使用
前提:已啟動(dòng) MQTT 服務(wù)器
點(diǎn)擊Create MQTT Client 按鈕來創(chuàng)建一個(gè) MQTT 客戶端;
接下來對(duì) MQTT 客戶端進(jìn)行配置,主要是配置好協(xié)議端口、連接用戶名密碼和 QoS 即可;
Client Name:隨便填
Protocol:選擇 mqtt / tcp
Host:MQTT服務(wù)器的IP地址和端口,問后端同事要
Username 和 Password:也是問服務(wù)端要
再配置一個(gè)訂閱者,訂閱者訂閱 testTopicA 這個(gè)主題,我們會(huì)向這個(gè)主題發(fā)送消息;
點(diǎn)擊頂部 Connection 按鈕進(jìn)行連接,綠色表示連接上了,紅色是連接斷開。你也可以添加更多的發(fā)布者和訂閱者。
發(fā)布者向主題中發(fā)布消息,訂閱者可以實(shí)時(shí)接收到。
負(fù)載測(cè)試
測(cè)試參數(shù):
測(cè)試過程:
測(cè)試結(jié)果:
結(jié)論:
測(cè)試時(shí)需要取消用戶名密碼
簡(jiǎn)單測(cè)試Broker的性能
結(jié)果展示比較直觀
MQTT.fx
介紹
協(xié)議支持:
TCP(tcp)
TLS(tls)
特點(diǎn):
界面美觀,操作便捷
不支持WebSocket協(xié)議
基于java開發(fā)
支持代理
通過 Nashorn Engine 的 JS 腳本支持
全平臺(tái)支持
Broker狀態(tài)檢測(cè)(HiveMQ & mosquitto),并沒有 emqtt
操作日志查看
payload的格式解析:
文本
JSON
HEX
Base64
Sparkplug
免費(fèi)(Apache 2.0,新版 5.0+ 需要license)
下載
-:http://www.jensd.de/apps/mqttfx/1.7.1/
入門使用
點(diǎn)擊 ? 按鈕來創(chuàng)建一個(gè) MQTT 客戶端;
接下來對(duì) MQTT 客戶端進(jìn)行配置,主要是配置好協(xié)議端口、連接用戶名密碼和 QoS 即可;
再配置一個(gè)訂閱者,訂閱者訂閱 testTopicA 這個(gè)主題,我們會(huì)向這個(gè)主題發(fā)送消息;
發(fā)布者向主題中發(fā)布消息,訂閱者可以實(shí)時(shí)接收到。
JS 腳本
// mqttManager 支持 publish() subsribe() unsubscribe() // 日志記錄 var Thread = Java.type("java.lang.Thread"); function execute(action) { out("Test Script: " + action.getName()); for (var i = 0; i < 10; i++) { switchON(); Thread.sleep(500); switchOFF(); Thread.sleep(500); } action.setExitCode(0); action.setResultText("done."); out("Test Script: Done"); return action; } function switchON() { out("fountain ON"); mqttManager.publish("home/garden/fountain", "ON"); } function switchOFF() { out("fountain OFF"); mqttManager.publish("home/garden/fountain", "OFF"); } function out(message){ output.print(message); }
軟件包網(wǎng)盤地址:
鏈接:https://pan.baidu.com/s/1MX3adP3ZVopErfBO63MyOA
提取碼:160z
參考資料:
[1]:《物聯(lián)網(wǎng)開發(fā)實(shí)戰(zhàn)》
[2]:https://www.cnblogs.com/linzhanfly/p/9923577.html
MQTT TCP/IP 設(shè)備接入 IoTDA
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。