EMQXMQTT5.0服務器的保留消息與消息過期間隔怎么實現(xiàn)

本篇內(nèi)容介紹了“EMQ X  MQTT 5.0服務器的保留消息與消息過期間隔怎么實現(xiàn)”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

在綠春等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設計制作按需網(wǎng)站制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,營銷型網(wǎng)站建設,外貿(mào)網(wǎng)站制作,綠春網(wǎng)站建設費用合理。

保留消息

服務端收到 Retain 標志為 1 的 PUBLISH 報文時,會將該報文視為保留消息,除了被正常轉(zhuǎn)發(fā)以外,保留消息會被存儲在服務端,每個主題下只能存在一份保留消息,因此如果已經(jīng)存在相同主題的保留消息,則該保留消息被替換。

當客戶端建立訂閱時,如果服務端存在主題匹配的保留消息,則這些保留消息將被立即發(fā)送給該客戶端。借助保留消息,新的訂閱者能夠立即獲取最近的狀態(tài),而不需要等待無法預期的時間,這在很多場景下非常重要的。

保留消息雖然存儲在服務端中,但它并不屬于會話的一部分。也就是說,即便發(fā)布這個保留消息的會話終結(jié),保留消息也不會被刪除。刪除保留消息只有兩種方式:

  1. 客戶端往某個主題發(fā)送一個 Payload 為空的保留消息,服務端就會刪除這個主題下的保留消息。

  2. 如果包含保留消息的 PUBLISH 報文設置了消息過期間隔屬性,那么保留消息在服務端存儲超過過期時間后就會被刪除。

消息過期間隔

PUBLISH 報文可以設置消息過期間隔這一屬性,消息過期間隔是一個四字節(jié)的整數(shù),表示應用消息的生命周期,單位是秒。

如果 PUBLISH 報文不設置消息過期間隔,那么應用消息不會過期。

如果 PUBLISH 報文設置了消息過期間隔,并且消息過期將已經(jīng)過期,服務端還沒開始向匹配的訂閱者交付該消息,那么服務端必須刪除該消息。

EMQ X MQTT 服務器的保留消息

EMQ X MQTT Broker 的保留消息功能是由 emqx_retainer 插件實現(xiàn),該插件默認開啟,通過修改 emqx_retainer 插件的配置,可以調(diào)整 EMQ X Broker 儲存保留消息的位置,限制接收保留消息數(shù)量和 Payload 最大長度,以及調(diào)整保留消息的過期時間。

emqx_retainer 插件默認開啟,插件的配置路徑為 etc/plugins/emqx_retainer.conf。

  • retainer.storage_type

    保留消息的儲存位置,EMQ X Broker 可以選擇將保留消息僅儲存在內(nèi)存中,僅儲存在硬盤中,或是同時儲存在內(nèi)存和硬盤中,可以由用戶的業(yè)務特點靈活決定。

    例如,想要收集電表讀數(shù)的用戶可能會決定使用 QoS 等級 1 的消息,因為他們不能接受數(shù)據(jù)在網(wǎng)絡傳輸途中丟失,但是,他們可能認為客戶端和服務端的數(shù)據(jù)可以存儲在內(nèi)存(易失性存儲器)中,因為電力供應系統(tǒng)是非??煽康?,不會有太大的數(shù)據(jù)丟失風險。

    與之相反,停車計費支付應用的提供商可能決定任何情況下都不能讓數(shù)據(jù)支付消息丟失,因此他們要求在通過網(wǎng)絡傳輸之前將所有的數(shù)據(jù)寫入到硬盤中(非易失性存儲器)。

  • retainer.max_retained_messages、retainer.max_payload_size

    retainer.max_retained_messages 規(guī)定了 EMQ X Broker 可以儲存的保留消息的最大數(shù)量,0 表示沒有限制。保留消息數(shù)量超出最大值限制后,可以替換已存在的保留消息,但不能為新的主題儲存保留消息。

    retainer.max_payload_size 規(guī)定了 EMQ X Broker 可以接收的保留消息的最大 Payload 值。Payload 大小超出最大值后 EMQ X 消息服務器會把收到的保留消息作為普通消息處理,不再儲存此消息。

    這兩項配置規(guī)定了 EMQ X Broker 可以接收與儲存的保留消息的上限,保證了 EMQ X Broker 不會占用過多的資源來儲存和處理保留消息。

  • retainer.expiry_interval

    保留消息的過期時間,0 表示永不過期。如果 PUBLISH 報文中設置了消息過期間隔,那么以 PUBLISH 報文中的消息過期間隔為準。

    當保留消息的過期后,EMQ X Broker 會刪除掉此消息。

“EMQ X  MQTT 5.0服務器的保留消息與消息過期間隔怎么實現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)頁題目:EMQXMQTT5.0服務器的保留消息與消息過期間隔怎么實現(xiàn)
網(wǎng)站網(wǎng)址:http://www.muchs.cn/article20/ijsgco.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、全網(wǎng)營銷推廣、做網(wǎng)站外貿(mào)建站、品牌網(wǎng)站制作、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司