MQTT快速入門
作為使用和熟悉產品功能的入門指導,本文提供如何快速使用云消息隊列 MQTT 版通過默認支持的MQTT協議收發消息的步驟。
對于非MQTT協議的接入,例如新能源,您必須首先購買云消息隊列 MQTT 版企業鉑金版,并通過專屬通道享受對應的文檔和技術支持服務。
您可觀看入門操作視頻來快速上手云消息隊列 MQTT 版。視頻詳細信息,請參見快速入門視頻。
注意事項
云消息隊列 MQTT 版需搭配后端消息存儲隊列一起使用,具體說明如下:
云消息隊列 MQTT 版實例是一個無狀態網關類型實例,用來完成IoT移動場景下的客戶端連接維持和消息轉發,本身并不提供消息數據持久化功能,具體的消息存儲和消息數據持久化還需要配置一個消息存儲實例。
現階段要求每個云消息隊列 MQTT 版實例(網關實例)必須綁定一個存儲實例(云消息隊列 RocketMQ 版實例)使用。
消息存儲實例目前只支持云消息隊列 RocketMQ 版類型的后端存儲實例。
目前您在同一個地域(Region)可以創建有限數量的云消息隊列 MQTT 版實例,且一個云消息隊列 MQTT 版實例僅可綁定一個相應的云消息隊列 RocketMQ 版實例。同一地域的實例數量上限參考控制臺具體提示。
在使用云消息隊列 MQTT 版時,請注意以下網絡訪問限制:
只有在同一個地域下的同一個實例中的Topic和Group ID才能互通,例如,某Topic創建在華北2(北京)地域下的實例A中,那么該Topic只能被在華北2(北京)地域下的實例A中創建的Group ID對應的云消息隊列 MQTT 版客戶端(下文簡稱客戶端)訪問。
流程
快速入門流程展示了如何使用云消息隊列 MQTT 版收發消息的流程。
如快速入門流程所示,使用客戶端收發消息需要先創建相應資源,否則云消息隊列 MQTT 版服務器會拒絕非法的Client ID的連接。
前提條件
您已經開通母產品云消息隊列 RocketMQ 版的服務。如未開通,請先開通該服務。
您已經擁有了阿里云AccessKey(AK)。詳細信息,請參見獲取AccessKey。
步驟一:創建資源
這里所說的資源包括:
云消息隊列 MQTT 版實例(用于客戶端連接維持和消息轉發)
消息存儲實例(用于消息的存儲,目前只支持云消息隊列 RocketMQ 版實例)
Topic(用于消息發送和訂閱的消息一級主題,即父級Topic)
Group ID(用于客戶端識別)
選擇地域。
請根據您的業務需求確定需要把資源創建在哪個地域。
在頂部菜單欄選擇地域,例如華北2(北京)地域,即您要將資源創建在哪個地域。
創建云消息隊列 MQTT 版實例。
首先,您需要創建云消息隊列 MQTT 版實例。創建前,請注意以下幾點:
您在每個地域下,所有類型的實例有總數量的限制,具體限制參考控制臺的提示。
請根據業務場景估算TPS、連接數和訂閱關系,選擇合理的規格。對于預付費類型(包年包月)的實例,如果選擇過小的規格會觸發服務限流影響業務。
購買的基礎版實例實時生效;購買的企業鉑金版實例需要時間部署,實例可運行時會通知您。
請按以下步驟創建云消息隊列 MQTT 版實例:
在左側導航欄,單擊概覽。
在實例列表頁面,單擊新建實例。
在購買頁面,按需選擇云消息隊列 MQTT 版實例版本以及相應的配置,然后根據頁面提示完成購買。
回到控制臺概覽頁面的實例列表,您可以看到已購買(創建)的云消息隊列 MQTT 版實例。
創建并綁定數據存儲實例。
創建完云消息隊列 MQTT 版實例后,您還需要創建用于存儲Topic和消息的實例(目前僅支持云消息隊列 RocketMQ 版的實例),然后將創建的云消息隊列 RocketMQ 版的實例與云消息隊列 MQTT 版實例進行一對一的綁定。
綁定關系有以下限制:
一個云消息隊列 MQTT 版實例僅允許綁定一次,綁定成功后即不允許更改。
一個存儲型實例僅允許綁定到一個云消息隊列 MQTT 版實例,不允許一對多綁定。
綁定的這兩個實例,命名空間類型必須一致,即獨享命名空間的實例不允許和非獨享命名空間的實例建立綁定關系。
如果提前刪除云消息隊列 MQTT 版實例綁定的存儲實例,則云消息隊列 MQTT 版實例會不可用。
請按以下步驟創建并綁定存儲實例:
在左側導航欄單擊概覽,選擇您剛創建的云消息隊列 MQTT 版實例,單擊繼續配置。
在消息持久化配置對話框,按實例情況和需求選擇對應選項。
如果您已購買云消息隊列 RocketMQ 版實例,請選擇選擇已有實例。選擇該選項后顯示的是您已創建(購買)的消息存儲實例列表。然后單擊您已有的云消息隊列 RocketMQ 版消息存儲實例,再單擊確認完成綁定。
如果您還未購買云消息隊列 RocketMQ 版實例,請選擇以下選項:
新建共享實例:創建云消息隊列 RocketMQ 版標準版實例。請輸入實例名和描述,然后單擊確認,完成創建。
購買鉑金版實例:創建云消息隊列 RocketMQ 版鉑金版實例。選擇購買鉑金版實例,單擊立即前往購買,然后按照頁面提示完成購買(即創建)。
完成創建后,重復步驟i和步驟ii,并選擇選擇已有實例,然后單擊剛剛創建的云消息隊列 RocketMQ 版實例,再單擊確認完成綁定。
創建Topic。
使用MQTT協議收發消息,需要創建MQTT的父級Topic(Parent Topic)。多級子Topic無需創建,直接在代碼中使用即可。
云消息隊列 MQTT 版實例和存儲實例之間會建立一一綁定關系,因此,創建的Topic其實是創建到存儲實例上,在云消息隊列 MQTT 版控制臺僅僅做一層映射關系,所有的Topic操作都可以同時使用存儲實例的操作習慣完成。
如果之前在使用云消息隊列 RocketMQ 版時已經創建過Topic,也可以直接使用。如果沒有創建過,請按照以下步驟進行創建:
在左側導航欄單擊消息存儲。
在Topic管理頁面,選擇您剛創建的云消息隊列 MQTT 版實例,單擊新建Topic。
在創建Topic對話框,輸入Topic名稱、選擇該Topic用于存儲和收發的消息類型、輸入備注信息,然后單擊確認。
說明如果需要使用云消息隊列 MQTT 版客戶端發送順序消息,則此處需要選用順序Topic,但云消息隊列 MQTT 版客戶端的消費場景暫時還不支持強順序。
創建Group ID。
云消息隊列 MQTT 版的Group ID用于指定一組邏輯功能完全一致的節點共用的組名,代表一類相同功能的設備。Group ID和Device ID共同組成用于識別MQTT客戶端的Client ID。更多信息請參見名詞解釋。
在左側導航欄,單擊Group管理。
在Group管理頁面,選擇您剛創建的云消息隊列 MQTT 版實例,單擊新建Group ID。
在創建Group ID 對話框中,輸入需要創建的Group ID,然后單擊確定。
創建完成后,在Group管理頁面中可以看到創建的Group ID。該頁面顯示當前地域下您擁有的所有Group ID。
說明如果Group ID不再使用,請及時刪除。
Group ID僅限創建賬號使用,主賬號創建的Group ID子賬號無法使用,子賬號的Group ID必須單獨創建。
步驟二:獲取接入點
在使用SDK收發消息時需要填寫云消息隊列 MQTT 版實例接入點。云消息隊列 MQTT 版實例的接入點由“接入點域名+端口”組成。
在云消息隊列 MQTT 版實例和云消息隊列 RocketMQ 版實例被成功綁定后,接入點信息便立即顯示在獲取接入點信息區域,您可直接獲取該接入點信息。
成功綁定云消息隊列 MQTT 版實例和云消息隊列 RocketMQ 版實例后,也可按照以下步驟獲取接入點:
在控制臺頂部導航欄選擇剛創建的資源所在地域,然后在左側導航欄單擊實例詳情。
在默認顯示的實例詳情頁面,選擇您創建的云消息隊列 MQTT 版實例名稱,單擊實例信息頁簽。
在實例信息頁簽的獲取接入點信息區域,查看所需的接入點域名。
- 公網接入點為本地公網環境訪問的IP地址,一般用于物聯網和移動互聯網場景中;
- VPC 接入點為云上私網訪問的IP地址,一般用于云端應用接入云消息隊列 MQTT 版。
- 客戶端不使用域名接入而是使用IP地址接入,產品方更新了域名解析導致原有IP地址失效。
- 客戶端網絡對IP地址設置網絡防火墻策略,產品方更新了域名解析后新IP地址被您的防火墻策略攔截。
端口
目前云消息隊列 MQTT 版除了支持標準的MQTT on TCP協議,還支持MQTT SSL、WebSocket、WebScoket SSL/TLS、Flash。對應的服務端口如端口說明所示,請根據實際需求修改。
云消息隊列 MQTT 版目前提供的是單向SSL加密,所以無需客戶端上傳證書。其次,服務端的證書會隨著請求握手自動下發,并且是和接入點域名強綁定的,所以目前不支持自定義證書加密。
表 1. 端口說明
標準協議端口 | SSL端口 | WebSocket端口 | WebSocket SSL/TLS端口 | Flash端口 |
1883 | 8883 | 80 | 443 | 843 |
步驟三:調用SDK發送和訂閱消息
更多信息
除了通過調用SDK/API發送消息,您可以在控制臺發送消息來快速驗證Topic的可用性,具體操作步驟如下:
在控制臺左側導航欄,單擊消息存儲。
在消息存儲頁面的Topic列表,找到您剛剛創建的Topic,單擊右側操作列的發送。
在發送消息對話框中設置消息屬性并輸入消息內容,然后單擊確定。
控制臺會返回消息發送成功通知和相應的Message ID。