快速使用MQTT.fx模擬SDK收發消息
MQTT.fx是一款基于Eclipse Paho、使用Java語言編寫的MQTT客戶端。支持Windows、Mac和Linux操作系統,可用于驗證設備是否可以連接云消息隊列 MQTT 版,并通過Topic發布和訂閱消息。本文以Windows系統為例,介紹如何使用MQTT.fx模擬SDK接入云消息隊列 MQTT 版并進行消息收發。
前提條件
下載并安裝MQTT.fx。
背景信息
云消息隊列 MQTT 版最簡單的使用場景即MQTT客戶端消息的自發自收。如下圖所示,您可以使用MQTT.fx作為MQTT客戶端,在MQTT.fx客戶端配置相關參數后接入云消息隊列 MQTT 版實現消息的發送和接收。
云消息隊列 MQTT 版同時提供了公網接入點和VPC 接入點。
在物聯網和移動互聯網的場景中,客戶端推薦使用公網接入點接入。
VPC 接入點僅供一些特殊場景使用。例如涉及部署在云端服務器上的應用場景。
本示例以公網接入點為例接入云消息隊列 MQTT 版。
使用流程
使用MQTT.fx收發消息的流程如下圖所示。
(RAM用戶必選)步驟一:為RAM用戶授權
若您開通消息隊列服務使用的是賬號是RAM用戶,必須先為RAM用戶進行授權,才能訪問云消息隊列 MQTT 版的資源。若您的賬號是阿里云賬號,默認擁有使用云消息隊列 MQTT 版資源的權限,您可以跳過該步驟。
使用RAM管理員登錄RAM控制臺。
在左側導航欄,選擇 。
在用戶頁面,單擊目標RAM用戶操作列的添加權限。
您也可以選中多個RAM用戶,單擊用戶列表下方的添加權限,為RAM用戶批量授權。
在新增授權面板,為RAM用戶添加權限。
選擇資源范圍。
賬號級別:權限在當前阿里云賬號內生效。
資源組級別:權限在指定的資源組內生效。
重要指定資源組授權生效的前提是該云服務及資源類型已支持資源組,詳情請參見支持資源組的云服務。資源組授權示例,請參見使用資源組限制RAM用戶管理指定的ECS實例。
選擇授權主體。
授權主體即需要添加權限的RAM用戶。系統會自動選擇當前的RAM用戶。
選擇權限策略。
權限策略是一組訪問權限的集合,分為以下兩種。支持批量選中多條權限策略。
單擊確認新增授權。
單擊關閉。
云消息隊列 MQTT 版提供以下系統策略,您可以根據權限范圍為RAM用戶授予相關權限。
權限策略名稱 | 說明 |
AliyunMQFullAccess | 管理云消息隊列 MQTT 版的權限,等同于阿里云賬號的權限,被授予該權限的RAM用戶具有所有消息收發權限且有控制臺所有功能操作權限。 |
AliyunMQPubOnlyAccess | 云消息隊列 MQTT 版的發布權限,被授予該權限的RAM用戶具有使用阿里云賬號所有資源通過SDK發送消息的權限。 |
AliyunMQSubOnlyAccess | 云消息隊列 MQTT 版的訂閱權限,被授予該權限的RAM用戶具有使用阿里云賬號所有資源通過SDK訂閱消息的權限。 |
AliyunMQReadOnlyAccess | 云消息隊列 MQTT 版的只讀權限,被授予該權限的RAM用戶僅有通過訪問控制臺或調用管控API讀取資源信息的權限。 |
步驟二:創建MQTT實例并獲取接入點
- 登錄云消息隊列 MQTT 版控制臺。
- 在左側導航欄單擊實例列表。
- 在頂部菜單欄選擇地域。
- 在實例列表頁面左上角單擊創建實例。
在彈出的付費方式面板中,選擇按需選擇包年包月或Serverless 按量付費,然后單擊確定。
在彈出的商品購買頁中,選擇實例類型和各計費項的規格,然后單擊立即購買。
云消息隊列 MQTT 版支持的實例類型及功能差異,請參見實例類型。
在確認訂單頁面,根據提示完成支付。
- 在支付成功頁面單擊返回控制臺。
- 回到云消息隊列 MQTT 版控制臺,在左側導航欄單擊實例列表,并將地域切換為您所購買的實例所對應的地域。
- 在實例列表頁面中,單擊您所購買實例的名稱或在其操作列單擊詳情,進入實例詳情頁面。
- 在實例詳情頁面單擊接入點頁簽,即可看到實例的接入點信息,本示例以公網接入點為例。
步驟三:創建父級Topic
MQTT協議支持多級Topic,父級Topic需在控制臺創建,子級Topic無需創建,使用時直接在代碼中設置即可。命名格式為:父級Topic和各子級Topic間均使用正斜線(/)隔開,<父級Topic名稱>/<二級Topic名稱>/<三級Topic名稱>,例如,SendMessage/demo/producer。父級Topic和子級Topic總長度不能超過64個字符。Topic詳細信息,請參見名詞解釋。
- 登錄云消息隊列 MQTT 版控制臺。
- 在左側導航欄單擊實例列表。
- 在頂部菜單欄選擇地域。
- 在實例列表中找到目標實例,在其操作列中,選擇 。
- 在Topic 管理頁面左上角,單擊創建 Topic。
- 在創建Topic面板中,輸入要創建的Topic名稱和描述,然后在左下角單擊確定。您可以在Topic 管理頁面查看剛創建的Topic。
步驟四:創建Group
Group ID詳細信息,請參見名詞解釋。
- 登錄云消息隊列 MQTT 版控制臺。
- 在左側導航欄單擊實例列表。
- 在頂部菜單欄選擇地域。
- 在實例列表中找到目標實例,在其操作列中,選擇 。
- 在Group 管理頁面的左上角,單擊創建 Group。
- 在創建Group面板中,輸入Group ID,然后在左下角單擊確定。您可以在Group 管理頁面查看剛創建的Group。
步驟五:配置MQTT.fx接入云消息隊列 MQTT 版
打開MQTT.fx客戶端,在其頂部菜單欄中選擇 。
在Edit Connection Profiles頁面中配置相關參數,然后單擊OK。
參數
說明
取值示例
Profile Name
配置文件名稱。
MQTT Test
Profile Type
配置的連接類型。
固定選擇MQTT Broker,表示連接MQTT服務器。
MQTT Broker Profile Settings
Broker Address
步驟二中獲取的云消息隊列 MQTT 版實例的接入點。
本示例以公網接入點為例。post-cn-st21xgs****.mqtt.aliyuncs.com
說明post-cn-st21xgs****為您購買的云消息隊列 MQTT 版實例ID。
Broker Port
連接云消息隊列 MQTT 版的協議端口。
MQTT協議端口:1883
SSL端口:8883
1883
Client ID
客戶端的唯一標識,要求全局唯一。Client ID由兩部分組成,組成形式為<GroupID>@@@<DeviceID>。<GroupID>為步驟四中創建的Group ID,<DeviceID>為您自定義的設備ID。Client ID的長度限制為64個字符,不允許使用不可見字符,具體限制,請參見使用限制。
GID_MQTT_test@@@111
本示例中<DeviceID>自定義為111,<GroupID>為GID_MQTT_test
。
User Credentials
User Name
客戶端接入云消息隊列 MQTT 版需要輸入用戶名和密碼完成認證,認證通過后才能進行消息收發。用戶名和密碼計算方式請參見簽名鑒權模式。
Signature|LTAI4GBY9J8e7YukuUie****|post-cn-st21xgs****
Password
p3Mxc2PDZet09sHhurTJAg3J****
SSL/TLS
Enable SSL/TLS
是否使用SSL或TLS加密協議。
取消選中
Protocol
協議版本。
TLSv1.2
說明其他參數均使用系統默認值,無需設置。您也可以根據實際場景自定義參數值。
參數配置完成后,單擊Connect進行連接。
右側綠燈亮起,表示MQTT.fx和云消息隊列 MQTT 版已成功連接。
右側紅燈亮起,表示連接失敗,您可以單擊Log查看日志,根據日志信息修改配置并重新嘗試連接。
您可以在云消息隊列 MQTT 版控制臺對應實例下,查看設備狀態,預期設備狀態為在線。
使用MQTT.fx訂閱消息
在MQTT.fx客戶端上方單擊Subscribe頁簽。
在Subscribe頁簽中,在左側Topic文本框輸入步驟三中創建的Topic的名稱,然后再單擊文本框右側的Subscribe。本示例以MQTT_test_topic為例。訂閱成功后,該Topic會顯示在訂閱列表中。
說明本文以父級Topic為例,若需要訂閱子級Topic,直接在Topic文本框中父級Topic名稱后加上子級Topic名稱即可,父級Topic和各子級Topic間均使用正斜線(/)隔開,例如MQTT_test_topic/subscribe1。Topic詳細信息,請參見名詞解釋。
在云消息隊列 MQTT 版控制臺對應實例下,單擊Topic 管理,找到訂閱的Topic,在其操作列單擊快速體驗。
在快速體驗消息收發面板中,選擇發送方式為控制臺并在消息內容文本框中輸入要發送的消息內容,例如:hello mqtt,然后單擊確定。
回到MQTT.fx客戶端,在Subscribe頁簽中可以查看訂閱的Topic接收到的消息。
使用MQTT.fx發送消息
在MQTT.fx客戶端上方單擊Publish頁簽。
在Publish頁簽中,在左側Topic文本框輸入步驟三中創建的Topic的名稱,本示例以MQTT_test_topic為例,然后在下面的消息文本框中輸入要發送的消息內容,例如:mqtt send message,然后單擊Topic文本框右側的Publish發送消息。
單擊Subscribe頁簽,您可以查看到對應訂閱的Topic已接收到剛才發送的消息。
查看消息軌跡
進入云消息隊列 MQTT 版控制臺,在消息軌跡查詢頁面輸入Group ID和Device ID然后單擊查詢。
返回3條消息軌跡。從下至上依次為:
第1條:MQTT云消息隊列 MQTT 版控制臺發送到MQTT.fx的消息。
第2條:MQTT.fx客戶端發送的消息。
第3條:推送至MQTT.fx的消息。第2條和第3條軌跡的Message ID相同,即通過MQTT.fx完成了同一條消息的自收發。
查看日志
在MQTT.fx中,單擊Log頁簽可查看操作日志和錯誤日志。