玩轉MQTT-阿里雲之MQTT使用(下)


 

摘要

       為使物聯網項目在正式使用時,能順利切換到具有高並發高負載能力的服務平台,對阿里雲提供的MQTT服務進行使用驗證。

引言

       之前寫“MQTT之阿里雲使用-玩轉阿里雲”這篇文章時,由於時間關系(因水平問題,本人寫文章通長耗時較長),打算將內容拆分為兩部分,將寫好的一部分先發了出去,打算稍后再補充后續完結內容。

       不成想,文章發出后,居然被管理員從首頁移除,嚴重打擊了本人原本不那么強悍的內心,導致一直不太有興趣完成后續部分。

      近來翻看自己的文章,發表這篇爛尾的文章居然是自己文章中閱讀訪問量最高的一篇。雖然文章內容組織比較凌亂,表述也不夠好,在這9102年即將過去之際,還是打算來一個續篇,為自己忙忙碌碌(碌碌無為)的2019做個收尾。

MQTT服務驗證

       書接上回,我們說到了阿里雲RocketMQ、MQTT服務的開通(MQTT消息的持久化依托MQ服務)、介紹了MQ、MQTT實例的創建,頂級Topic資源的創建,GroupID前綴的創建以及RAM帳號資源的創建及帳號授權。

       一系列准備工作之后,准備開始使用MQTT消息中間件服務。

訪問鑒權

       使用微消息隊列 MQTT 的客戶端收發消息時,服務端會根據 MQTT 客戶端設置的 Username 和 Password 參數來進行鑒權。

       阿里雲支持兩種鑒權模式

       簽名驗證:永久授權,適用於客戶端安全受信任的場景

       臨時 Token 權限驗證:臨時授權,適用於客戶端不安全的場景

 

       具體鑒權認證的相關資料在這里,大家可自行訪問閱讀。https://help.aliyun.com/document_detail/54225.html

 

簽名校驗

      簡單介紹一下阿里雲MQTT訪問中的簽名鑒權模式下的訪問要點

      1、 MQTT連接參數中ClientId必須以GroupID為前綴,以@@@作為連接符,連接自定義的客戶ID

      2、 MQTT連接參數中Username由鑒權模式名稱、AccessKey、InstanceId 三部分組成,以 “|” 分隔。

      3、 MQTT連接參數中Password是用AccessKey對應的AccessKeySecret對ClientId使用 HMAC-SHA1 方法進行簽名計算得到一個二進制數組,再對該二進制數組做 Base64 編碼得到最終的 Password 簽名字符串。

 

      簽名校驗資料網址如下:https://help.aliyun.com/document_detail/48271.html

 

      阿里雲MQTT服務管理頁面中,提供了一個在線的JS版本的簽名校驗驗證計算頁面,用於驗證各位自行實現的校驗算法是否正確。

 

 

MQTT連接測試

讓我們調出Paho神器,來一場說連就連的測試

https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.0.2/

https://www.eclipse.org/paho/index.php?page=downloads.php

 

 

      如上圖,先創建MQTT連接,填入服務器地址及端口,填入客戶機標識(ClientId)

 

 

      在MQTT連接選項中,勾選開啟登錄,填寫用戶名、密碼

 

      點擊連接,正常情況下,即可成功連接並登錄到阿里雲MQTT服務器。

      筆者基於C#,使用開源MQTTnet的Nuget包,也實現了一個簡單的MQTT客戶端。我們用這個客戶端進行連接測試,效果如下圖。

 

消息消費

      MQTT是基於二進制消息的發布/訂閱編程模式的消息協議。

      要使用MQTT進行通訊,就需要有發布者和消費者。發布者通過發布主題消息傳遞信息,接收者通過訂閱對應的主題接收和消費信息。

訂閱主題

 

      MQTT客戶端與MQTT服務器建立連接之后,我們即可以進行消息訂閱和消息發布。

發布主題

      我們使用上文中建立的頂級主題創建一個帶有通配符的訂閱主題。

      注意,MQTT允許使用通配符訂閱主題,但是並不允許使用通配符廣播。

 

 

 

       我們創建一個頂級主題下帶有城市和發布者編號的主題,發布一條消息,Payload中攜帶一個json格式的狀態信息和坐標信息。

       點擊發布,可以看到上圖中,接收框中,成功接收到訂閱主題下的消息。(操作中發布了二條消息)。

 

       使用Paho測試消息發布/訂閱,效果相同。

 

       一個發布者發布的消息,可以被多個訂閱者接收。

       至此,阿里雲MQTT服務使用介紹完畢。

 

      <<<玩轉MQTT-阿里雲之MQTT使用(上)


免責聲明!

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



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