摘要:協(xié)議版本介紹互聯(lián)網(wǎng)的基礎(chǔ)網(wǎng)絡(luò)協(xié)議是協(xié)議消息隊列遙測傳輸是基于協(xié)議棧而構(gòu)建的已成為通信的標(biāo)準(zhǔn)為什么選擇有多好多好多么牛逼我就不說了說的再多不如一個一個試試完了做比對剩下的那個就是要選擇的實在不想這樣搞技術(shù)就跟著一線走發(fā)布和訂閱模型協(xié)議在網(wǎng)絡(luò)中
mqtt 協(xié)議版本: 3.1.1MQTT 介紹
互聯(lián)網(wǎng)的基礎(chǔ)網(wǎng)絡(luò)協(xié)議是 TCP/IP協(xié)議.
MQTT(消息隊列遙測傳輸)是基于 TCP/IP 協(xié)議棧而構(gòu)建的, 已成為 IoT 通信的標(biāo)準(zhǔn).
為什么選擇 MQTTMQTT 有多好多好, 多么牛逼我就不說了. 說的再多不如一個一個試, 試完了做比對, 剩下的那個就是要選擇的.
實在不想這樣搞, 技術(shù)就跟著一線走.
發(fā)布和訂閱模型MQTT 協(xié)議在網(wǎng)絡(luò)中定義了兩種實體類型: 一個消息代理和一些客戶端.
代理是一個服務(wù)器, 它從客戶端接收所有消息, 然后將這些消息路由到相關(guān)的目標(biāo)客戶端. 客戶端就是能夠與代理交互來發(fā)送和接收消息的.
客戶端連接到代理. 它可以訂閱代理中的任何消息 “主題”. 此連接可以是簡單的 TCP/IP 連接, 也可以是用于發(fā)送敏感消息的加密 TLS 連接.
客戶端通過將消息和主題發(fā)送給代理, 代理然后將消息轉(zhuǎn)發(fā)給所有訂閱該主題的客戶端.
因為 MQTT 消息是按主題進行組織的, 所以應(yīng)用程序開發(fā)人員能靈活地指定某些客戶端只能與某些消息交互.
上圖我們有兩個主題分別是 config_change device_data.
設(shè)備將在 device_data 主題上發(fā)布設(shè)備數(shù)據(jù), 經(jīng)過 Broker 發(fā)送給所有訂閱者接收(這里的訂閱者是數(shù)據(jù)處理和存儲).
而我們的設(shè)備控制器將命令發(fā)布到 config_change 主題, 經(jīng)過 Broker 發(fā)送給所有訂閱者接收(這里的訂閱者是設(shè)備).
?? Broker = 代理 = MQTT 服務(wù)器MQTT Broker 選擇
下面介紹幾款MQTT服務(wù)器:
Apache-Apollo: 一個代理服務(wù)器, 在 ActiveMQ 基礎(chǔ)上發(fā)展而來, 可以支持 STOMP、AMQP、MQTT、Openwire、SSL和WebSockets 等多種協(xié)議, 并且 Apollo 提供后臺管理頁面, 方便開發(fā)者管理和調(diào)試.
EMQ: 號稱百萬級開源MQTT消息服務(wù)器, 基于 Erlang/OTP 語言平臺開發(fā), 支持大規(guī)模連接和分布式集群, 發(fā)布訂閱模式的開源MQTT消息服務(wù)器.
HiveMQ: 一個企業(yè)級的MQTT代理,主要用于企業(yè)和新興的機器到機器M2M通訊和內(nèi)部傳輸, 最大程度的滿足可伸縮性、易管理和安全特性, 提供免費的個人版. HiveMQ提供了開源的插件開發(fā)包.
Mosquitto: 一款實現(xiàn)了消息推送協(xié)議MQTT v3.1的開源消息代理軟件, 提供輕量級的、支持可發(fā)布/訂閱的消息推送模式.
了解 MQTT 協(xié)議更詳細(xì)的協(xié)議介紹在這里
MQTT 是一種連接協(xié)議, 它指定了如何組織數(shù)據(jù)字節(jié)并通過 TCP/IP 網(wǎng)絡(luò)傳輸它們. 但實際上, 開發(fā)人員并不需要了解這個連接協(xié)議.
所有 MQTT 庫和工具都提供了直接處理這些消息的簡單方法, 并能自動填充一些必需的字段, 比如消息和客戶端 ID.
首先, 客戶端發(fā)送一條 CONNECT 消息來連接代理. CONNECT 消息要求建立從客戶端到代理的連接. CONNECT 消息包含以下內(nèi)容參數(shù).
表 1. CONNECT 消息參數(shù)
參數(shù) | 說明 |
---|---|
cleanSession | 此標(biāo)志指定連接是否是持久性的. 持久會話會將所有訂閱和可能丟失的消息 (具體取決于 QoS) 都存儲在代理中 (請參閱 表 3 獲取 QoS 的描述) |
username | 代理的身份驗證和授權(quán)憑證 |
password | 代理的身份驗證和授權(quán)憑證 |
lastWillTopic | 連接意外中斷時,代理會自動向某個主題發(fā)送一條 “l(fā)ast will” 消息. |
lastWillQos | “l(fā)ast will” 消息的 QoS. (請參閱 表 3 來查看 QoS 的描述) |
lastWillMessage | “l(fā)ast will” 消息本身 |
keepAlive | 這是客戶端通過 ping 代理來保持連接有效所需的時間間隔 |
客戶端收到來自代理的一條 CONNACK 消息. CONNACK 消息包含以下內(nèi)容參數(shù).
表 2. CONNACK 消息參數(shù)
參數(shù) | 說明 |
---|---|
sessionPresent | 此參數(shù)表明連接是否已有一個持久會話. 也就是說, 連接已訂閱了主題, 而且會接收丟失的消息. |
returnCode | 0 表示成功. 其他值指出了失敗的原因. |
建立連接后, 客戶端向代理發(fā)送一條或多條 SUBSCRIBE 消息, 表明它會從代理接收針對某些主題的消息. 如表 3.
表 3. SUBSCRIBE 消息參數(shù)
參數(shù) | 說明 |
---|---|
qos | 表明此主題范圍內(nèi)的消息傳送到客戶端所需的一致程度. 值 0:不可靠, 消息基本上僅傳送一次, 如果當(dāng)時客戶端不可用, 則會丟失該消息. 值 1:消息應(yīng)傳送至少 1 次. 值 2:消息僅傳送一次. |
topic | 要訂閱的主題. 一個主題可以有多個級別, 級別之間用斜杠字符分隔. 例如, “dw/demo” 和 “ibm/bluemix/mqtt” 是有效的主題. |
客戶端成功訂閱某個主題后, 代理會返回一條 SUBACK 消息, 其中包含一個或多個 returnCode 參數(shù).
表 4. SUBACK 消息參數(shù)
參數(shù) | 說明 |
---|---|
returnCode | SUBCRIBE 命令中的每個主題都有一個返回代碼. 值 0 - 2:成功達到相應(yīng)的 QoS 級別. 值 128:失敗. |
與 SUBSCRIBE 消息對應(yīng), 客戶端也可以通過 UNSUBSCRIBE 消息取消訂閱一個或多個主題.
表 5. UNSUBSCRIBE 消息參數(shù)
參數(shù) | 說明 |
---|---|
topic | 此參數(shù)可重復(fù)用于多個主題. |
客戶端可向代理發(fā)送 PUBLISH 消息. 該消息包含一個主題和數(shù)據(jù). 代理將消息轉(zhuǎn)發(fā)給所有訂閱該主題的客戶端.
表 6. PUBLISH 消息參數(shù)
參數(shù) | 說明 |
---|---|
topicName | 發(fā)布消息的相關(guān)主題. |
qos | 消息傳遞的服務(wù)質(zhì)量水平. |
retainFlag | 此標(biāo)志表明代理是否保留該消息作為針對此主題的最后一條已知消息. |
payload | 消息中的實際數(shù)據(jù). 它可以是文本字符串或二進制大對象數(shù)據(jù). |
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72327.html
摘要:一簡介實現(xiàn)方式實現(xiàn)協(xié)議需要客戶端和服務(wù)器端通訊完成,在通訊過程中,協(xié)議中有三種身份發(fā)布者代理服務(wù)器訂閱者。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時是訂閱者。 ...
摘要:時間就是金錢,效率就是生命本教程助力開發(fā)者使用協(xié)議快速產(chǎn)品化。摘要借助具備及聯(lián)網(wǎng)功能的,快速部署到客戶產(chǎn)品上,助力開發(fā),縮短開發(fā)周期,快速實現(xiàn)產(chǎn)品商業(yè)化。 時間就是金錢,效率就是生命 本教程助力開發(fā)者使用MQTT協(xié)議快速產(chǎn)品化。 摘要 借助具備MQTT及聯(lián)網(wǎng)功能的DTU,快速部署到客戶產(chǎn)品...
摘要:,消息隊列遙測傳輸是開發(fā)的一個即時通訊協(xié)議,有可能成為物聯(lián)網(wǎng)的重要組成部分。會發(fā)生消息丟失或重復(fù)。只有一次,確保消息到達一次。此外,國內(nèi)很多企業(yè)都廣泛使用作為手機客戶端與服務(wù)器端推送消息的協(xié)議。 前幾天寫了一下MQTT協(xié)議實現(xiàn)推送數(shù)據(jù)傳輸,所以我會不定期的更新一下關(guān)注MQTT的知識。 MQTT: MQTT(Message Queuing Telemetry Transport,消息隊列...
摘要:本文是其中的一個解決方案。地址客戶端服務(wù)端前端網(wǎng)頁介紹,消息隊列遙測傳輸是開發(fā)的一個即時通訊協(xié)議,有可能成為物聯(lián)網(wǎng)的重要組成部分。必須用于在頂層分隔符之后,除了當(dāng)自己指定時。 1. 問題描述 最近,本實驗室大量上馬云測量,云監(jiān)控方面的項目,大概是屬于物聯(lián)網(wǎng)應(yīng)用的一個分支。老板也有將舊有儀器改造的想法,所以要實現(xiàn)儀器設(shè)備的云控制。本文是其中的一個解決方案。 2. 技術(shù)選型 消息隊列:M...
摘要:背景通過接口實現(xiàn)調(diào)用發(fā)送數(shù)據(jù),接口返回值為發(fā)送數(shù)據(jù)的對應(yīng)結(jié)果。接口為同步阻塞,為異步回調(diào)方式。接收數(shù)據(jù)回調(diào)接收到數(shù)據(jù)后,通過閉鎖釋放阻塞的線程,同時設(shè)置結(jié)果返回給調(diào)用者 背景 通過HTTP接口實現(xiàn)調(diào)用MQTT Client發(fā)送數(shù)據(jù),HTTP接口返回值為MQTT Client發(fā)送數(shù)據(jù)的對應(yīng)結(jié)果。 HTTP接口為同步阻塞,MQTT Client 為異步回調(diào)方式。如何實現(xiàn)在HTTP接口中調(diào)用...
閱讀 3758·2023-04-25 20:00
閱讀 3108·2021-09-22 15:09
閱讀 504·2021-08-25 09:40
閱讀 3411·2021-07-26 23:38
閱讀 2200·2019-08-30 15:53
閱讀 1096·2019-08-30 13:46
閱讀 2788·2019-08-29 16:44
閱讀 2043·2019-08-29 15:32