協議的基礎性變化
MQTT 5是對現有協議規范的重大更新,新版本協議具有以下特征:輕量級、易用性、極強的可擴展性、對移動網絡的適用性以及通信參與者的解耦。
MQTT仍然是MQTT
02
如果您熟悉MQTT3.1.1,那么您之前知道的關于MQTT的所有原則和功能同樣適用于MQTT v5。不同的是,以往功能的部分細節,如“Last Will and Testament”發生了一點變化,某些功能也得到擴展。此外,由虹科HiveMQ實現的額外的流行功能,如“TTL”或“共享訂閱”被添加到新的規范中。
協議也稍有變化,增加了一個額外的控制包(AUTH)。
但總的來說,MQTT5仍然可以清楚地識別為MQTT。
03
MQTT 頭部屬性和原因代碼
MQTT5最靈活的新功能之一是可以在MQTT頭部中添加自定義鍵值(key-value)屬性。與HTTP等協議類似,MQTT客戶端和代理可以添加任意數量的自定義(或預定義)頭部來攜帶元數據。這種元數據可用于應用程序的特定數據,而預先定義的頭部信息被用于實現大多數新的MQTT功能。
許多MQTT數據包現在也包括原因代碼(Reason Codes)。一個原因代碼表明發生了一個預先定義的協議錯誤。這些原因代碼通常是在確認數據包中進行,允許客戶端和代理解釋錯誤情況(并有可能解決錯誤情況)。原因代碼有時也被稱為否定確認(Negative Acknowledgements)。以下MQTT數據包可以攜帶原因代碼:
CONNACK
PUBACK
PUBREC
PUBREL
PUBCOMP
SUBACK
UNSUBACK
AUTH
DISCONNECT
CONNACK Return Codes—指示不支持/未實現功能
04
隨著MQTT的普及,許多公司創建并提供了許多MQTT部署。但并非所有的這些實現都是完全兼容MQTT規范的,因為有時候一些功能并沒有實現,比如QoS 2、保留消息或持久會話。值得一提的是,虹科HiveMQ是完全符合MQTT規范的,并且支持所有的功能。
MQTT 5為不完整的MQTT實現提供了一種方法,用來表明該代理不支持特定的功能。客戶端的工作是確保不使用不支持的功能。代理的部署是在CONNACK數據包(客戶端發送CONNECT數據包后由代理發送)中使用預定義的標頭來表明不支持特定的功能。當然,這些標頭也可以用來向客戶端發送通知,說明它沒有使用特定功能的權限。
在MQTT 5中,有以下預定義的頭部用于指示未實現的功能(或不允許客戶端使用的功能):
這些返回代碼對于在異構環境中溝通各個MQTT客戶端的權限具有重要作用。這個新功能的缺點是:MQTT客戶端需要自己實現對這些代碼的解釋,并且需要確保應用程序的程序員僅使用代理支持(客戶端有權限)的功能。虹科HiveMQ 100% 支持所有 MQTT 5 功能,因此只有在涉及到部署中的權限時,管理員才會使用這些自定義頭文件。
下期文章中,我們將繼續給大家介紹MQTT5協議中的基礎更改中其他新功能的細節描述。
關于虹科 HiveMQ
05
虹科HiveMQ 是一個基于 MQTT 數據傳輸的通信平臺,旨在將數據快速、高效、可靠地傳遞給連接的物聯網設備,HiveMQ 使用 MQTT 協議在設備和企業平臺之間進行實時、雙向的數據推送。
虹科HiveMQ 的建立是為了解決企業在構建新的物聯網應用時面臨的一些關鍵技術挑戰,包括:
構建可靠、可擴展的關鍵業務物聯網應用
快速的數據交付,以滿足終端用戶對響應式物聯網產品的期望
通過有效利用硬件、網絡和云資源降低運營成本
將物聯網數據整合到現有的企業系統中
虹科HiveMQ 提供免費版、專業版、企業版 MQTT Broker 產品,并提供 Kafka、企業安全及 MQTT Broker 橋接三種企業級擴展套件,HiveMQ 還提供高效的 MQTT 客戶端及云平臺,多方位滿足用戶需求。
-
通信
+關注
關注
18文章
6032瀏覽量
135993 -
MQTT
+關注
關注
5文章
651瀏覽量
22506
發布評論請先 登錄
相關推薦
評論