天天看點

使用 MQTT.fx 接入 EMQ X Cloud

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

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

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

基本訂閱/推送/連接配接功能

使用者認證

SSL/TLS連接配接支援

易用的消息編輯欄

支援代理

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

軟體自由,其開源協定為 Apache 2.0 license

支援跨平台

支援 $SYS 主題訂閱管理 MQTT Broker

完整的日志控制台

支援 JavaScript 腳本處理消息

支援預定義模版

但同時也有缺陷:

不支援 MQTT 5.0 協定

一次隻能建立一個連接配接,不友善多連接配接調試

不支援 WebSocket 協定,無法調試 MQTT over Webscoket 的情況

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 Broker 連接配接位址欄,及其連接配接配置。其下方功能 Tabs 含有 Publish 釋出欄、Subscribe 訂閱欄、Scripts 腳本欄、Broker Status 狀态消息欄、Log 日志資訊控制欄。

使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud

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

broker-cn.emqx.io 為國内伺服器,broker.emqx.io 為國外伺服器,讀者可自行選擇一個進行連接配接。
使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud

之後,我們将把消息推送到 Broker,回到 Publish 下,并且輸入主題 <code>/testTopic/1</code>,并在消息輸入框中輸入"hello world"等消息,如下圖所示:

使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud

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

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

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

publish(),推送消息

subscribe(),訂閱主題

unsubscribe(),取消主題訂閱

output,輸出消息到控制台

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

使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud

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

打開設定,和普通連接配接一樣填寫好 Broker Address 和 Broker Port(分别為 <code>broker.emqx.io</code> 和 <code>8883</code>),選擇 <code>SSL/TLS</code> 項,選擇 TLSv1.2 協定,勾選 CA signed server certficate,之後選擇應用,如下圖所示:

使用 MQTT.fx 接入 EMQ X Cloud

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

使用 MQTT.fx 接入 EMQ X Cloud
使用 MQTT.fx 接入 EMQ X Cloud

以上就是使用 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 提問,我們将會及時回複支援。

繼續閱讀