溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MQTT 5.0訂閱標識符與訂閱選項是什么

發(fā)布時間:2021-12-07 09:06:42 來源:億速云 閱讀:185 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“MQTT 5.0訂閱標識符與訂閱選項是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

訂閱標識符

客戶端可以在訂閱時指定一個訂閱標識符,服務(wù)端將在訂閱成功創(chuàng)建或修改時建立并存儲該訂閱與訂閱標識符的映射關(guān)系。當有匹配該訂閱的 PUBLISH 報文要轉(zhuǎn)發(fā)給此客戶端時,服務(wù)端會將與該訂閱關(guān)聯(lián)的訂閱標識符隨 PUBLISH 報文一并返回給客戶端。

因此,客戶端可以建立訂閱標識符與消息處理程序的映射,以在收到 PUBLISH 報文時直接通過訂閱標識符將消息定向至對應(yīng)的消息處理程序,這會遠遠快于通過主題匹配來查找消息處理程序的速度。

MQTT 5.0訂閱標識符與訂閱選項是什么

由于 SUBSCRIBE 報文支持包含多個訂閱,因此可能出現(xiàn)多個訂閱關(guān)聯(lián)到同一個訂閱標識符的情況。即便是分開訂閱,也可能出現(xiàn)這種情況,但這是被允許的,只是用戶應(yīng)當意識到這樣使用可能引起的后果。根據(jù)客戶端的實際訂閱情況,最終客戶端收到的 PUBLISH 報文中可能包含多個訂閱標識符,這些標識符可能完全不同,也可能有些是相同的,以下是幾種常見的情況:

  1. 客戶端訂閱主題 a 并指定訂閱標識符為 1,訂閱主題 b 并指定訂閱標識符為 2。由于使用了不同的訂閱標識符,主題為 ab 的消息能夠被定向至不同的消息處理程序。

  2. 客戶端訂閱主題 a 并指定訂閱標識符為 1,訂閱主題 b 并指定訂閱標識符為 1。由于使用了相同的訂閱標識符,主題為 ab 的消息都將被定向至同一個消息處理程序。

  3. 客戶端訂閱主題 a/+ 并指定訂閱標識符為 1,訂閱主題a/b 并指定訂閱標識符為 1。主題為 a/b 的 PUBLISH 報文將會攜帶兩個相同的訂閱標識符,對應(yīng)的消息處理程序?qū)⒈挥|發(fā)兩次。

  4. 客戶端訂閱主題 a/+ 并指定訂閱標識符為 1,訂閱主題a/b 并指定訂閱標識符為 2。主題為 a/b 的 PUBLISH 報文將會攜帶兩個不同的訂閱標識符,一個消息將觸發(fā)兩個不同的消息處理程序。

MQTT 5.0訂閱標識符與訂閱選項是什么

這種 PUBLISH 報文中攜帶多個訂閱標識符的情況,在消息速率低的時候通常不成問題,但在消息速率高時可能會引發(fā)一些性能問題,因此我們建議您盡量確保這種情況的出現(xiàn)都是您有意為之。

訂閱選項

在 MQTT v5 中,你可以使用更多的訂閱選項來改變服務(wù)端的行為。

MQTT 5.0訂閱標識符與訂閱選項是什么

QoS

參見 MQTT 消息服務(wù)質(zhì)量等級。

No Local

在 MQTT v3.1.1 中,如果你訂閱了自己發(fā)布消息的主題,那么你將收到自己發(fā)布的所有消息。

而在 MQTT v5 中,如果你在訂閱時將此選項設(shè)置為 1,那么服務(wù)端將不會向你轉(zhuǎn)發(fā)你自己發(fā)布的消息。

Retain As Publish

這一選項用來指定服務(wù)端向客戶端轉(zhuǎn)發(fā)消息時是否要保留其中的 RETAIN 標識,注意這一選項不會影響保留消息中的 RETAIN 標識。因此當 Retain As Publish 選項被設(shè)置為 0 時,客戶端直接依靠消息中的 RETAIN 標識來區(qū)分這是一個正常的轉(zhuǎn)發(fā)消息還是一個保留消息,而不是去判斷消息是否是自己訂閱后收到的第一個消息(轉(zhuǎn)發(fā)消息甚至可能會先于保留消息被發(fā)送,視不同 Broker 的具體實現(xiàn)而定)。

Retain Handling

這一選項用來指定訂閱建立時服務(wù)端是否向客戶端發(fā)送保留消息:

  • Retain Handling 等于 0,只要客戶端訂閱成功,服務(wù)端就發(fā)送保留消息。

  • Retain Handling 等于 1,客戶端訂閱成功且該訂閱此前不存在,服務(wù)端才發(fā)送保留消息。畢竟有些時候客戶端重新發(fā)起訂閱可能只是為了改變一下 QoS,并不意味著它想再次接收保留消息。

  • Retain Handling 等于 2,即便客戶訂閱成功,服務(wù)端也不會發(fā)送保留消息。

“MQTT 5.0訂閱標識符與訂閱選項是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI