本篇內(nèi)容介紹了“EMQ X MQTT 5.0主題重寫怎么運用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的皇姑網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
EMQ X 的主題重寫功能支持根據(jù)用戶配置的規(guī)則在 MQTT 客戶端訂閱主題、發(fā)布消息、取消訂閱的時候?qū)?A 主題重寫為 B 主題。
EMQ X 的 保留消息 和 延遲發(fā)布 可以與主題重寫配合使用,例如,當用戶想使用延遲發(fā)布功能,但不方便修改客戶端發(fā)布的主題時,可以使用主題重寫將相關(guān)主題重寫為延遲發(fā)布的主題格式。
主題重寫功能默認關(guān)閉,開啟此功能需要修改 etc/emqx.conf
文件中的 module.rewrite
配置項。默認 off
表示關(guān)閉,如需開啟請修改為 on
。
module.rewrite = off
EMQ X 的主題重寫規(guī)則需要用戶自行配置,用戶可以自行添加多條主題重寫規(guī)則,規(guī)則的數(shù)量沒有限制,但由于任何攜帶主題的 MQTT報文都需要匹配一遍重寫規(guī)則,因此此功能在高吞吐場景下帶來的性能損耗與規(guī)則數(shù)量是成正比的,用戶需要謹慎地使用此功能。
每條主題重寫規(guī)則的格式如下:
module.rewrite.rule.<number> = 主題過濾器 正則表達式 目標表達式
每條重寫規(guī)則都由以空格分隔的主題過濾器、正則表達式、目標表達式三部分組成。在主題重寫功能開啟的前提下,EMQ X 在收到諸如 PUBLISH報文等帶有主題的 MQTT 報文時,將使用報文中的主題去依次匹配配置文件中規(guī)則的主題過濾器部分,一旦成功匹配,則使用正則表達式提取主題中的信息,然后替換至目標表達式以構(gòu)成新的主題。
目標表達式中可以使用 $N
這種格式的變量匹配正則表達中提取出來的元素,$N
的值為正則表達式中提取出來的第 N 個元素,比如 $1
即為正則表達式提取的第一個元素。
需要注意的是,EMQ X 使用倒序讀取配置文件中的重寫規(guī)則,當一條主題可以同時匹配多條主題重寫規(guī)則的主題過濾器時,EMQ X 僅會使用它匹配到的第一條規(guī)則進行重寫,如果該條規(guī)則中的正則表達式與 MQTT 報文主題不匹配,則重寫失敗,不會再嘗試使用其他的規(guī)則進行重寫。因此用戶在使用時需要謹慎的設(shè)計 MQTT 報文主題以及主題重寫規(guī)則。
假設(shè) etc/emqx.conf
文件中已經(jīng)添加了以下主題重寫規(guī)則:
module.rewrite.rule.1 = y/+/z/# ^y/(.+)/z/(.+)$ y/z/$2
module.rewrite.rule.2 = x/# ^x/y/(.+)$ z/y/x/$1
module.rewrite.rule.3 = x/y/+ ^x/y/(\d+)$ z/y/$1
此時我們分別訂閱 y/a/z/b
、y/def
、x/1/2
、x/y/2
、x/y/z
五個主題:
y/def
不匹配任何一個主題過濾器,因此不執(zhí)行主題重寫,直接訂閱 y/def
主題。
y/a/z/b
匹配 y/+/z/#
主題過濾器,EMQ X 執(zhí)行 module.rewrite.rule.1
規(guī)則,通過正則正則表達式匹配出元素 [a、b]
,將匹配出來的第二個元素帶入 y/z/$2
,實際訂閱了 y/z/b
主題。
x/1/2
匹配 x/#
主題過濾器,EMQ X 執(zhí)行 module.rewrite.rule.2
規(guī)則,通過正則表達式未匹配到元素,不執(zhí)行主題重寫,實際訂閱 x/1/2
主題。
x/y/2
同時匹配 x/#
和 x/y/+
兩個主題過濾器,EMQ X 通過倒序讀取配置,所以優(yōu)先匹配 module.rewrite.rule.3
,通過正則替換,實際訂閱了 z/y/2
主題。
x/y/z
同時匹配 x/#
和 x/y/+
兩個主題過濾器,EMQ X 通過倒序讀取配置,所以優(yōu)先匹配 module.rewrite.rule.3
,通過正則表達式未匹配到元素,不執(zhí)行主題重寫,實際訂閱 x/y/z
主題。需要注意的是,即使 module.rewrite.rule.3
的正則表達式匹配失敗,也不會再次去匹配 module.rewrite.rule.2
的規(guī)則。
“EMQ X MQTT 5.0主題重寫怎么運用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
文章名稱:EMQXMQTT5.0主題重寫怎么運用
文章鏈接:http://chinadenli.net/article4/jieiie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、ChatGPT、網(wǎng)站導(dǎo)航、電子商務(wù)、域名注冊、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)