MQTT 中的簡單公共訂閱模型
其主要功能包括:
-
使用釋出/訂閱訊息模式,它提供一對多的訊息分發和應用程式的分離。
-
與有效負載內容無關的訊息傳輸。訊息傳遞的三種服務質量
-
小的傳輸開銷和協議交換最小化以減少網路傳輸
https://i.stack.imgur.com/Ma7HZ.jpg
通常有兩種型別的訊息服務。
-
佇列(一對一連線)
-
主題(一對一/一對多)
MQTT 不支援可靠的佇列,但 MQTT 支援主題,預設情況下主題不可靠但我們可以使用 MQTT 功能和方法使其可靠。
主題和佇列之間的區別
佇列:
- 點對點模型
- 只有一個消費者收到訊息
- 訊息必須按傳送的順序傳遞
- 佇列僅保證每條訊息只處理一次。
- 佇列知道消費者或 JMS 客戶端是誰。目的地是已知的。
- JMS 客戶端(使用者)不必始終處於活動狀態或連線到佇列以接收或讀取訊息。
- 成功處理的每條訊息都由消費者確認。
話題:
-
釋出/訂閱模型
-
多個客戶端訂閱該訊息
-
無法保證必須在傳送的訂單中傳遞訊息
-
無法保證每條訊息只處理一次。因為這可以從模型中感知到
-
主題,有多個訂閱者,主題可能不知道所有訂閱者。目的地未知
-
除非訂閱是持久訂閱,否則訂閱者/客戶端需要在生成者生成訊息時處於活動狀態。
-
否,消費者/訂閱者不會確認成功處理的每條訊息。
但我們可以使用 MQTT 減少主題的缺點。主題可以可靠並控制 MQTT 功能中的重複項