阿里mqtt得使用

調(diào)試用的工具下載地址:

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

阿里云服務(wù)

??????許多人對云服務(wù)一知半解,以為知道個(gè)ECS/云主機(jī),就是云服務(wù)的全部了。其實(shí),云服務(wù)有許多內(nèi)容,消息中間件服務(wù)也是其中一種。

????? 消息隊(duì)列在實(shí)際應(yīng)用中常用的使用場景。異步處理,應(yīng)用解耦,流量削鋒和消息通訊四個(gè)場景,具體內(nèi)容園中相關(guān)文章不少,筆者不再此獻(xiàn)丑了呵。

????? 本文主要對阿里云提供的MQTT服務(wù)進(jìn)行具體實(shí)戰(zhàn)配置應(yīng)用進(jìn)行說明。

MQTT簡介

?MQTT是基于二進(jìn)制消息的發(fā)布/訂閱編程模式的消息協(xié)議,最早由IBM提出的,如今已經(jīng)成為OASIS規(guī)范。由于規(guī)范很簡單,非常適合需要低功耗和網(wǎng)絡(luò)帶寬有限的IoT場景,比如:

遙感數(shù)據(jù)

汽車

智能家居

智慧城市

醫(yī)療醫(yī)護(hù)

?由于物聯(lián)網(wǎng)的環(huán)境是非常特別的,所以MQTT遵循以下設(shè)計(jì)原則:

精簡,不添加可有可無的功能。

發(fā)布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞。

允許用戶動(dòng)態(tài)創(chuàng)建主題,零運(yùn)維成本。

把傳輸量降到最低以提高傳輸效率。

把低帶寬、高延遲、不穩(wěn)定的網(wǎng)絡(luò)等因素考慮在內(nèi)。

支持連續(xù)的會(huì)話控制。

理解客戶端計(jì)算能力可能很低。

提供服務(wù)質(zhì)量管理。

假設(shè)數(shù)據(jù)不可知,不強(qiáng)求傳輸數(shù)據(jù)的類型與格式,保持靈活性。

運(yùn)用MQTT協(xié)議,設(shè)備可以很方便地連接到物聯(lián)網(wǎng)云服務(wù),管理設(shè)備并處理數(shù)據(jù),最后應(yīng)用到各種業(yè)務(wù)場景,如下圖所示:

.登錄阿里云

首先,我們打開阿里云。

https://www.aliyun.com/

右上角,登錄

支持多種方式登錄

可用阿里系旗下的淘寶、支付寶、釘釘?shù)葞ぬ柕卿浂鵁o需注冊呵,真是方便啊

不過當(dāng)中,還夾了一個(gè)微博登錄,不知是什么個(gè)情況,本人不用這個(gè),不管也罷。

選擇淘寶登錄

消息隊(duì)列MQ

咦,不是要說MQTT嗎?怎么扯到MQ消息隊(duì)列了呢?這是因?yàn)榘⒗镌频腗QTT服務(wù)自身沒有持久化功能,需要依托MQ服務(wù)的持久化,所以我們需要先開通MQ服務(wù)。

登錄阿里云后,找到管理控制臺,在如下位置,找到MQ相關(guān)服務(wù)

阿里云中的產(chǎn)品太多,筆者摸索了半天才找到的呵。

開通RocketMQ服務(wù)

選擇消息隊(duì)列MQ

單擊消息隊(duì)列 RocketMQ進(jìn)入消息隊(duì)列 RocketMQ 的產(chǎn)品主頁。

在消息隊(duì)列 RocketMQ 的產(chǎn)品主頁上,單擊立即開通進(jìn)入消息隊(duì)列 RocketMQ 服務(wù)開通頁面,根據(jù)提示完成開通服務(wù)。

注:開通服務(wù)不收費(fèi)?。。?/b>

創(chuàng)建資源

資源類型說明

一個(gè)新的應(yīng)用接入消息隊(duì)列 RocketMQ 需要先創(chuàng)建相關(guān)的消息隊(duì)列 RocketMQ 資源,包括:

實(shí)例:用于消息隊(duì)列 RocketMQ 服務(wù)的虛擬機(jī)資源,會(huì)存儲消息主題(Topic)和客戶端 ID(Group ID)信息。

消息主題(Topic):在消息隊(duì)列 RocketMQ 的消息系統(tǒng)中,消息生產(chǎn)者將消息發(fā)送到某個(gè)指定的 Topic ,而消息消費(fèi)者則通過訂閱該指定的 Topic 來獲取和消費(fèi)消息。

Group ID用于消息消費(fèi)者(或生產(chǎn)者)的標(biāo)識

阿里云 AccessKey:用于收發(fā)消息時(shí)進(jìn)行賬戶鑒權(quán)

MQ服務(wù)管理界面如下

微消息隊(duì)列MQTT

在阿里云中,MQTT被稱為微消息隊(duì)列,大家入鄉(xiāng)為俗吧。

點(diǎn)擊 消息隊(duì)列 RocketMQ ,出現(xiàn)下拉列表

哦,原來MQTT服務(wù)你躲在這里?。óa(chǎn)品中直接搜索MQTT是找不到的哦)

各位同學(xué),看到的界面可能與我有所不同,可能在看到上述界面之間,未開通相關(guān)服務(wù)的同學(xué),可能會(huì)看到一個(gè)開通相關(guān)服務(wù)的界面,點(diǎn)擊開通就行了呵。(已開通的話,相關(guān)界面是不會(huì)再顯示的呵)

僅開通服務(wù),不創(chuàng)建相關(guān)資源,是不會(huì)收費(fèi)的呵。

創(chuàng)建MQTT實(shí)例

創(chuàng)建MQTT實(shí)例

彈出購買界面

很多同學(xué)可能看到這里就準(zhǔn)備要走人了呵,別急,往下看

我們選擇最右側(cè)的按量付費(fèi)套餐。

該收費(fèi)方式按使用收費(fèi)?。?!

除了頂級Topic是按每天每條2元錢收取資源占用費(fèi),其余的內(nèi)容,按實(shí)際使用量收費(fèi)。

如測試階段,頂級Topic可以使用時(shí)創(chuàng)建,用完刪除,僅收費(fèi)使用日的資源占用費(fèi)。

我們繼續(xù)。

購買后,系統(tǒng)自動(dòng)生成一個(gè)MQTT服務(wù)實(shí)例

系統(tǒng)顯示我們已成功創(chuàng)建了一個(gè)實(shí)例

同時(shí),系統(tǒng)給出了第二步的向?qū)В?/p>

消息存儲配置

阿里云中的MQTT服務(wù)沒有提供存儲功能,需要一個(gè)MQ服務(wù)來提供支持。

控制臺給出的選項(xiàng)中,Kafka和AMQP目前均不可用

只有RocketMQ可選。

好吧,這也算是選擇的話(我有得選嗎?)

我們選擇新建共享實(shí)例,我們以共享單車應(yīng)用為例,取一個(gè) bike 的實(shí)例名

確認(rèn),系統(tǒng)生成RocketMQ實(shí)例

系統(tǒng)完成MQTT實(shí)例的配置,并給出了公網(wǎng)接入點(diǎn)地址。

創(chuàng)建Topic

阿里云的MQTT主題訂閱要求必需創(chuàng)建一個(gè)頂級的主題資源,這點(diǎn)可能與一些自行搭建的MQTT Broker有所區(qū)別,筆者分析可能是出于管理的需要。

?我們創(chuàng)建一個(gè)項(xiàng)級Topic

我們選擇普通消息,其他的消息類型,大家可自行查看相應(yīng)的說明。

創(chuàng)建組ID

組ID也是阿里云MQTT通訊中的一定規(guī)定,ClientID需要使用組ID為前綴。

RAM資源訪問控制

在服務(wù)創(chuàng)建過程中,阿里云系統(tǒng)會(huì)提示我們需要配置RAM管理

RAM應(yīng)是資源訪問管理的意思,大家可以自行查閱。

創(chuàng)建用戶

我們創(chuàng)建一個(gè)名為bike的用戶

點(diǎn)擊確定,系統(tǒng)提示需要手機(jī)驗(yàn)證,我們獲取驗(yàn)證碼后填入并確定(如不需要該用戶具有管理功能,只選擇編程訪問,僅用于程序訪問,可無需短信驗(yàn)證

系統(tǒng)生成用戶信息,生成了用戶名和密碼

大家切記,一定要點(diǎn)制復(fù)制,將用戶信息進(jìn)行妥善保存,否則,你會(huì)發(fā)現(xiàn),前面一頓操作猛如虎,沒有AccessKeySecret白瞎杵。

一旦關(guān)閉此頁面,AccessKeySecret是無法再找回的。

不過,系統(tǒng)中雖然不能查看AccessKeySecret,但是還是允許為用戶創(chuàng)建新的AccessKey和AccessKeySecret,萬一AccessKeySecret丟失,只有新創(chuàng)建了。

授權(quán)

創(chuàng)建用戶后,需要對用戶進(jìn)行授權(quán)

?對用戶添加權(quán)限

?我們授與創(chuàng)建用戶的MQ訪問權(quán)限

#玩轉(zhuǎn)MQTT-阿里云之MQTT使用(下)

摘要

?????? 為使物聯(lián)網(wǎng)項(xiàng)目在正式使用時(shí),能順利切換到具有高并發(fā)高負(fù)載能力的服務(wù)平臺,對阿里云提供的MQTT服務(wù)進(jìn)行使用驗(yàn)證。

引言

之前寫“MQTT之阿里云使用-玩轉(zhuǎn)阿里云”這篇文章時(shí),由于時(shí)間關(guān)系(因水平問題,本人寫文章通長耗時(shí)較長),打算將內(nèi)容拆分為兩部分,將寫好的一部分先發(fā)了出去,打算稍后再補(bǔ)充后續(xù)完結(jié)內(nèi)容。

?????? 不成想,文章發(fā)出后,居然被管理員從首頁移除,嚴(yán)重打擊了本人原本不那么強(qiáng)悍的內(nèi)心,導(dǎo)致一直不太有興趣完成后續(xù)部分。

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

MQTT服務(wù)驗(yàn)證

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

?????? 一系列準(zhǔn)備工作之后,準(zhǔn)備開始使用MQTT消息中間件服務(wù)。

訪問鑒權(quán)

?????? 使用微消息隊(duì)列 MQTT 的客戶端收發(fā)消息時(shí),服務(wù)端會(huì)根據(jù) MQTT 客戶端設(shè)置的 Username 和 Password 參數(shù)來進(jìn)行鑒權(quán)。

?????? 阿里云支持兩種鑒權(quán)模式

?????? 簽名驗(yàn)證:永久授權(quán),適用于客戶端安全受信任的場景

?????? 臨時(shí) Token 權(quán)限驗(yàn)證:臨時(shí)授權(quán),適用于客戶端不安全的場景

具體鑒權(quán)認(rèn)證的相關(guān)資料在這里,大家可自行訪問閱讀。https://help.aliyun.com/document_detail/54225.html

簽名校驗(yàn)

??????簡單介紹一下阿里云MQTT訪問中的簽名鑒權(quán)模式下的訪問要點(diǎn)

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

??????2、 MQTT連接參數(shù)中Username由鑒權(quán)模式名稱、AccessKey、InstanceId 三部分組成,以 “|” 分隔。

??????3、 MQTT連接參數(shù)中Password是用AccessKey對應(yīng)的AccessKeySecret對ClientId使用

HMAC-SHA1 方法進(jìn)行簽名計(jì)算得到一個(gè)二進(jìn)制數(shù)組,再對該二進(jìn)制數(shù)組做 Base64 編碼得到最終的 Password 簽名字符串。

簽名校驗(yàn)資料網(wǎng)址如下:https://help.aliyun.com/document_detail/48271.html

??????阿里云MQTT服務(wù)管理頁面中,提供了一個(gè)在線的JS版本的簽名校驗(yàn)驗(yàn)證計(jì)算頁面,用于驗(yàn)證各位自行實(shí)現(xiàn)的校驗(yàn)算法是否正確。



MQTT連接測試

讓我們調(diào)出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/downloads.php


??????如上圖,先創(chuàng)建MQTT連接,填入服務(wù)器地址及端口,填入客戶機(jī)標(biāo)識(ClientId)


??????在MQTT連接選項(xiàng)中,勾選開啟登錄,填寫用戶名、密碼


??????點(diǎn)擊連接,正常情況下,即可成功連接并登錄到阿里云MQTT服務(wù)器。

??????筆者基于C#,使用開源MQTTnet的Nuget包,也實(shí)現(xiàn)了一個(gè)簡單的MQTT客戶端。我們用這個(gè)客戶端進(jìn)行連接測試,效果如下圖。

消息消費(fèi)

??????MQTT是基于二進(jìn)制消息的發(fā)布/訂閱編程模式的消息協(xié)議。

??????要使用MQTT進(jìn)行通訊,就需要有發(fā)布者和消費(fèi)者。發(fā)布者通過發(fā)布主題消息傳遞信息,接收者通過訂閱對應(yīng)的主題接收和消費(fèi)信息。

訂閱主題

??????MQTT客戶端與MQTT服務(wù)器建立連接之后,我們即可以進(jìn)行消息訂閱和消息發(fā)布。

發(fā)布主題

??????我們使用上文中建立的頂級主題創(chuàng)建一個(gè)帶有通配符的訂閱主題。

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

?????? 我們創(chuàng)建一個(gè)頂級主題下帶有城市和發(fā)布者編號的主題,發(fā)布一條消息,Payload中攜帶一個(gè)json格式的狀態(tài)信息和坐標(biāo)信息。

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

?????? 使用Paho測試消息發(fā)布/訂閱,效果相同。

?????? 一個(gè)發(fā)布者發(fā)布的消息,可以被多個(gè)訂閱者接收。

?????? 至此,阿里云MQTT服務(wù)使用介紹完畢。

使用MQTT.fx客戶端接入阿里云

一、前期準(zhǔn)備。

1.關(guān)于MQTT連接的屬性:https://www.cnblogs.com/mhtc/p/11112153.html

2.關(guān)于阿里云配置工具的使用:https://www.cnblogs.com/mhtc/p/11130809.html

3.關(guān)于阿里云物聯(lián)平臺MQTT服務(wù)的一些屬性。

4.MQTT.fx客戶端,請百度后官網(wǎng)下載。

二、實(shí)際操作。

1.生成連接參數(shù)。這里不做介紹,請參考https://www.cnblogs.com/mhtc/p/11130809.html

2.打開MQTT.fx新建一個(gè)客戶端。

3.將上次生成的信息做如下拷貝粘貼。

4.設(shè)置一般參數(shù)。

這里都滿足平臺的要求, 沒有做更改。

5.填入用戶名和密碼。

6.如果采用的是TCP直連,到這里就結(jié)束了。如果采用TLS加密傳輸,需要設(shè)置以下。

這個(gè)連接沒有采用加密傳輸,沒有設(shè)置這個(gè)步驟。

7.保存配置退出客戶端配置界面。連接服務(wù)器。

綠點(diǎn)表示連接成功。

登陸物聯(lián)網(wǎng)管理平臺看一下。設(shè)備在線。

8. 發(fā)布一條消息。

這個(gè)是官方提供的基礎(chǔ)的主題, 可自定義主題

客戶端發(fā)布消息

平臺端收到消息。發(fā)布的消息只能選擇QoS0, QoS1, 其他的服務(wù)器不支持.

日志:

消息內(nèi)容:

9.訂閱一個(gè)主題。訂閱主題沒有測試。留待以后增加。

三、用一個(gè)客戶端連接云平臺的意義。

1. 驗(yàn)證連接參數(shù)的配置是否正確。

2.快速體驗(yàn)MQTT連接,不用寫代碼編譯。

3.可以測試阿里云更深一步的內(nèi)容,物模型,數(shù)據(jù)的周轉(zhuǎn)傳輸?shù)取?/p>

配置圖片

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007閱讀 2,334評論 0 3
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    小邁克閱讀 3,124評論 1 3
  • 1-------- 走進(jìn)前端 2-------- jQuery 3-------- CSS 4-------- A...
    依依玖玥閱讀 2,425評論 0 34
  • 傍晚,晚風(fēng)習(xí)習(xí),雨后的季夏沒那么悶了,晚上略顯涼,天氣不是很好??墒牵茈y得暑假了,無論是形式還是內(nèi)容上,今天我們...
    大白菜小豆腐閱讀 657評論 2 2
  • 最近在滔滔不絕的寫東西,主要是訓(xùn)練自己的寫作能力和學(xué)習(xí)能力,雖然染香的龍飛鳳舞已經(jīng)寫過三遍了,但是每一次都有新的收...
    阿璇璇閱讀 509評論 0 0

友情鏈接更多精彩內(nèi)容