mqtt 傳送訊息過多 物聯網開發之MQTT協議?

2021-10-14 07:21:31 字數 2856 閱讀 4010

什麼是mqtt?

mqtt(訊息佇列遙測傳輸)是iso 標準(iso/iec prf 20922)下基於發布/訂閱正規化的訊息協議。它工作在 tcp/ip協議族上,是為硬體效能低下的遠端裝置以及網路狀況糟糕的情況下而設計的發布/訂閱型訊息協議,為此,它需要乙個訊息中介軟體 。

mqtt是乙個基於客戶端-伺服器的訊息發布/訂閱傳輸協議。mqtt協議是輕量、簡單、開放和易於實現的,這些特點使它適用範圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(m2m)通訊和物聯網(iot)。其在,通過衛星鏈路通訊感測器、偶爾撥號的醫療裝置、智慧型家居、及一些小型化裝置中已廣泛使用。

未來幾年,mqtt的應用會越來越廣,值得關注。作為物聯網開發的我們當然也要對這種協議進行了解和使用。

mqtt有哪些特點?

1、使用發布/訂閱訊息模式,提供一對多的訊息發布,解除應用程式耦合;

2、對負載內容遮蔽的訊息傳輸;

3、使用 tcp/ip 提供網路連線;

4、有三種訊息發布服務質量:

「至多一次」,訊息發布完全依賴底層 tcp/ip 網路。會發生訊息丟失或重複。這一級別可用於如下情況,環境感測器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次傳送。

「至少一次」,確保訊息到達,但訊息重複可能會發生。

「只有一次」,確保訊息到達一次。這一級別可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。

5、小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協議交換最小化,以降低網路流量;

6、使用 last will 和 testament 特性通知有關各方客戶端異常中斷的機制。

mqtt協議訊息中介軟體產品?

目前有很多的mqtt訊息中介軟體伺服器,如下,都是mqtt協議的伺服器端的實現。

ibm websphere

mq telemetry

ibm messagesight

mosquitto

eclipse paho

emqttd xively

m2m.io

webmethods

nirvana messaging

rabbitmq

apache activemq

apache apollo

moquette

hivemq

mosca

litmus automation loop

jorammq

thingmq

vernemq

mqtt協議實現方式

實現mqtt協議需要客戶端和伺服器端通訊完成,在通訊過程中,mqtt協議中有三種身份:發布者(publish)、**(broker)(伺服器)、訂閱者(subscribe)。其中,訊息的發布者和訂閱者都是客戶端,訊息**是伺服器,訊息發布者可以同時是訂閱者。

mqtt傳輸的訊息分為:主題(topic)和負載(payload)兩部分:

(1)topic,可以理解為訊息的型別,訂閱者訂閱(subscribe)後,就會收到該主題的訊息內容(payload);

(2)payload,可以理解為訊息的內容,是指訂閱者具體要使用的內容

mqtt協議中的訂閱、主題、會話

a、訂閱(subscription)

訂閱包含主題篩選器(topic filter)和最大服務質量(qos)。訂閱會與乙個會話(session)關聯。乙個會話可以包含多個訂閱。每乙個會話中的每個訂閱都有乙個不同的主題篩選器。

b、會話(session)

每個客戶端與伺服器建立連線後就是乙個會話,客戶端和伺服器之間有狀態互動。會話存在於乙個網路之間,也可能在客戶端和伺服器之間跨越多個連續的網路連線。

c、主題名(topic name)

連線到乙個應用程式訊息的標籤,該標籤與伺服器的訂閱相匹配。伺服器會將訊息傳送給訂閱所匹配標籤的每個客戶端。

d、主題篩選器(topic filter)

乙個對主題名萬用字元篩選器,在訂閱表示式中使用,表示訂閱所匹配到的多個主題。

e、負載(payload)

訊息訂閱者所具體接收的內容。

mqtt協議中的方法

mqtt協議中定義了一些方法(也被稱為動作),來於表示對確定資源所進行操作。這個資源可以代表預先存在的資料或動態生成資料,這取決於伺服器的實現。通常來說,資源指伺服器上的檔案或輸出。主要方法有:

(1)connect。等待與伺服器建立連線。

(2)disconnect。等待mqtt客戶端完成所做的工作,並與伺服器斷開tcp/ip會話。

(3)subscribe。等待完成訂閱。

(4)unsubscribe。等待伺服器取消客戶端的乙個或多個topics訂閱。

(5)publish。mqtt客戶端傳送訊息請求,傳送完成後返回應用程式執行緒。

MQTT 物聯網 IoT 訊息推送協議

mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是一種構建於tcp ip協議的 輕量級 訊息傳輸協議,它基於發布 訂閱 publish subscribe 模式,由ibm在1999年發布。對於需要較小 占用空間或網路頻寬有限的遠端連線非常有用,...

物聯網開發之MQTT通訊

mqtt協議 mqtt協議簡介 mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是乙個客戶端服務端架構的發布 訂閱模式的 輕量級 訊息傳輸協議。mqtt控制報文由三部分組成,依次為 固定報頭 fixed header 可變報頭 variable...

物聯網傳輸協議MQTT

mqtt是乙個物聯網傳輸協議,它被設計用於輕量級的發布 訂閱式訊息傳輸,旨在為低頻寬和不穩定的網路環境中的物聯網裝置提供可靠的網路服務。mqtt是專門針對物聯網開發的輕量級傳輸協議。mqtt協議針對低頻寬網路,低計算能力的裝置,做了特殊的優化,使得其能適應各種物聯網應用場景。目前mqtt擁有各種平台...