使用 MQTT.fx 接入 EMQ X Cloud


本文將以 MQTT.fx 作為 MQTT 客戶端測試工具,接入 MQTT 雲服務 - EMQ X Cloud。通過本文,你將能快速了解 MQTT.fx 的基礎用法以及 MQTT 協議的基本概念與使用。

MQTT.fx 簡介

MQTT.fx 是目前最為流行的 MQTT 桌面客戶端工具,MQTT.fx 1.0 Major 版本由 Jens Deters 使用JavaFX 技術開發,即為 Java 虛擬機應用。遺憾的是 MQTT.fx 目前已經停止維護,並轉為由 Softblade 公司資助開發另發行了其商業版本 MQTT.fx® 5.0,采用收費許可證方式經營該軟件。本文中的 MQTT.fx 不經特殊說明即特指 1.0 版本。

它包含主流的 MQTT 客戶端功能:

此外 MQTT.fx 也有其他優秀特性:

  • 軟件自由,其開源協議為 Apache 2.0 license
  • 支持跨平台
  • 支持 $SYS 主題訂閱管理 MQTT Broker
  • 完整的日志控制台
  • 支持 JavaScript 腳本處理消息
  • 支持預定義模版

但同時也有缺陷:

  • 不支持 MQTT 5.0 協議
  • 一次只能建立一個連接,不方便多連接調試
  • 不支持 WebSocket 協議,無法調試 MQTT over Webscoket 的情況

EMQ X Cloud 簡介

EMQ X Cloud 是由 EMQ 公司推出的可連接海量物聯網設備,集成各類數據庫及業務系統的全托管雲原生 MQTT 服務。作為全球首個全托管的 MQTT 5.0 公有雲服務,EMQ X Cloud 提供了一站式運維代管、獨有隔離環境的 MQTT 消息服務。

在萬物互聯的時代,EMQ X Cloud 可以幫助用戶快速構建面向物聯網領域的行業應用,輕松實現物聯網數據的采集、傳輸、計算和持久化。

本文將使用 EMQ X Cloud 提供的 免費公共 MQTT 服務器 作為本次測試的 MQTT 服務器地址,服務器接入信息如下:

  • Broker: broker-cn.emqx.io
  • TCP Port: 1883
  • SSL/TLS Port: 8883

更多詳情請訪問 EMQ X Cloud 官網,或查看 EMQ X Cloud 文檔

MQTT.fx 使用

預覽

其主頁面如下圖所示,最上方為 MQTT Broker 連接地址欄,及其連接配置。其下方功能 Tabs 含有 Publish 發布欄、Subscribe 訂閱欄、Scripts 腳本欄、Broker Status 狀態消息欄、Log 日志信息控制欄。

MQTT.fx 預覽

其中每一個 Tab 均支持拖拽成為單獨窗口,如下圖所示:

MQTT.fx 獨立窗口

連接

首先 MQTT client 與 Broker 通訊需要建立連接。點擊連接地址欄中輸入框右邊的配置圖標,進入具體的連接配置。

MQTT.fx 連接按鈕

選擇 Profile Type 為 MQTT Broker。Broker Address 填入 broker-cn.emqx.io,Broker Port 填入 1883,如下圖所示:

broker-cn.emqx.io 為國內服務器,broker.emqx.io 為國外服務器,讀者可自行選擇一個進行連接。

MQTT.fx 連接配置

點擊OK,確認配置,回到主界面,點擊 Connect ,可見右邊的圓圈變為綠色,表示當前連接連通,如下圖所示:

MQTT.fx 連接成功

訂閱/發送消息

完成連接的建立之后,即可開始訂閱消息。因為 MQTT 協議采用的是訂閱/推送的方式,所以我們需要在連接之后訂閱主題,之后主題上有消息產生即可收到來自 EMQ X Cloud 推送。

EMQ X Platform

點擊進入 Subscribe Tab 下,在主題框中輸入 /testTopic/1,點擊 Subscribe 訂閱按鈕,在左側出現訂閱的主題列表,訂閱的主題目前消息數量為0,如下圖所示:

MQTT.fx 主題訂閱

之后,我們將把消息推送到 Broker,回到 Publish 下,並且輸入主題 /testTopic/1,並在消息輸入框中輸入"hello world"等消息,如下圖所示:

MQTT.fx 消息發布

點擊 Publish 發送,回到 Subscribe Tab,發現訂閱的主題/testTopic/1收到消息,如下圖所示:

MQTT.fx 消息接收

我們使用 MQTT.fx 這一客戶端向 EMQ X Cloud 下的 /testTopic/1 主題發送了消息"hello wolrd",訂閱了這個主題的所有客戶端都會收到這個消息,包括剛剛訂閱了該主題的發送客戶端。

腳本

使用腳本可以更加靈活地自定義消息推送邏輯,點擊 Script Tab,點擊 Edit 對腳本內容進行修改,修改為以下內容:

function execute(action) {
    mqttManager.publish("/testTopic/1", "hello world from script");
    return action;
}

其中 mqttManager 是 MQTT.fx 腳本功能開放的 API,主要有:

  • publish(),推送消息
  • subscribe(),訂閱主題
  • unsubscribe(),取消主題訂閱
  • output,輸出消息到控制台

點擊 Execute 執行,之后回到 Subscribe 下發現消息增加,其內容為 “hello world from script”。腳本發送功能正常,如下圖所示:

MQTT.fx 腳本

日志

在日志內,我們可以查看 MQTT.fx 與 EMQ X Cloud 交互過程,例如主題訂閱,消息推送,消息接收等:

MQTT.fx 日志

SSL/TLS連接

以 CA 自簽名服務為例子,展示如何啟用 SSL 協議連接到 EMQ X Cloud。

打開設置,和普通連接一樣填寫好 Broker Address 和 Broker Port(分別為 broker.emqx.io8883),選擇 SSL/TLS 項,選擇 TLSv1.2 協議,勾選 CA signed server certficate,之后選擇應用,如下圖所示:

MQTT.fx SSL/TLS

點擊連接,可以看到右邊的鎖圖標是關閉的,表示啟用了 SSL,查看日志,發現 SSL 連接相關端口 8883 相關字樣,連接 SSL/TLS 成功。

MQTT.fx 連接日志

MQTT.fx SSL/TLS 狀態

以上就是使用 MQTT.fx 接入 EMQ X Cloud 的簡單示例,更多詳情可訪問 EMQ X Cloud

版權聲明: 本文為 EMQ 原創,轉載請注明出處。

原文鏈接:https://www.emqx.com/zh/blog/connecting-to-emqx-cloud-with-mqttfx

技術支持:如對本文或 EMQ 相關產品有疑問,可訪問 EMQ 問答社區 https://askemq.com 提問,我們將會及時回復支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM