您好,登錄后才能下訂單哦!
EMQ X Enterprise 新功能Rule Engine如何理解,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
RuleEngine (以下簡稱規(guī)則引擎) 用于配置 EMQ X 消息流與設(shè)備事件的處理、響應(yīng)規(guī)則。作為 2019 年度 EMQ X 新增重量級功能,規(guī)則引擎不僅提供了清晰、靈活的"配置式"的業(yè)務(wù)集成方案,用于簡化業(yè)務(wù)開發(fā)流程,提升用戶易用性,降低業(yè)務(wù)系統(tǒng)與 EMQ X 的耦合度;也為 EMQ X 的私有功能定制提供了一個更優(yōu)秀的基礎(chǔ)架構(gòu),提升開發(fā)交付速度。
規(guī)則引擎開源版本提供了基礎(chǔ)處理能力,已集成在 EMQ X v3.1.0 中發(fā)布。功能更靈活完備、可用性定制性更強(qiáng)的規(guī)則引擎正在緊密開發(fā)測試,計劃集成在下一 EMQ X 商業(yè)版中發(fā)布。
規(guī)則引擎典型應(yīng)用場景舉例:
動作監(jiān)聽:智慧家庭智能門鎖開發(fā)中,門鎖會因為網(wǎng)絡(luò)、電源故障、人為破壞等原因離線導(dǎo)致功能異常,使用規(guī)則引擎配置監(jiān)聽離線事件向應(yīng)用服務(wù)推送該故障信息,可以在接入層實現(xiàn)第一時間的故障檢測的能力;
數(shù)據(jù)篩選:車輛網(wǎng)的卡車車隊管理,車輛傳感器采集并上報了大量運行數(shù)據(jù),應(yīng)用平臺僅關(guān)注車速大于 40 km/h 時的數(shù)據(jù),此場景下可以使用規(guī)則引擎對消息進(jìn)行條件過濾,向業(yè)務(wù)消息隊列寫入滿足條件的數(shù)據(jù);
消息路由:智能計費應(yīng)用中,終端設(shè)備通過不同主題區(qū)分業(yè)務(wù)類型,可通過配置規(guī)則引擎將計費業(yè)務(wù)的消息接入計費消息隊列并在消息抵達(dá)設(shè)備端后發(fā)送確認(rèn)通知到業(yè)務(wù)系統(tǒng),非計費信息接入其他消息隊列,實現(xiàn)業(yè)務(wù)消息路由配置;
消息編解碼:其他公共協(xié)議/私有 TCP 協(xié)議接入、工控行業(yè)等應(yīng)用場景下,可以通過規(guī)則引擎的本地處理函數(shù)(可在 EMQ X 上定制開發(fā))做二進(jìn)制/特殊格式消息體的編解碼工作;亦可通過規(guī)則引擎的消息路由將相關(guān)消息流向外部計算資源如函數(shù)計算進(jìn)行處理(可由用戶自行開發(fā)處理邏輯),將消息轉(zhuǎn)為業(yè)務(wù)易于處理的 JSON 格式,簡化項目集成難度、提升應(yīng)用快速開發(fā)交付能力。
Rule Engine 工作示意圖
規(guī)則引擎通過嵌入在 EMQ 的消息轉(zhuǎn)發(fā)過程中對數(shù)據(jù)進(jìn)行過濾、轉(zhuǎn)換和豐富,實現(xiàn)高效的數(shù)據(jù)處理。新的規(guī)則引擎涵蓋了 EMQ X 中多個插件的功能,將原先插件中獨立的外部資源進(jìn)行集中管理,實現(xiàn)資源復(fù)用,降低管理監(jiān)控復(fù)雜度。同時,規(guī)則引擎將大部分原先只能在應(yīng)用端進(jìn)行的計算內(nèi)置到 EMQ X 中,通過計算、過濾、篩選高價值數(shù)據(jù)提高消息處理效率的同時,精簡了業(yè)務(wù)架構(gòu)、減少數(shù)據(jù)傳遞路徑降低了消息處理時延。
規(guī)則引擎相關(guān)的功能包括:
消息規(guī)則:處理設(shè)備到 EMQ X 的消息,實現(xiàn)條件計算篩選、消息結(jié)構(gòu)調(diào)整,消息重新發(fā)布、持久化與橋接;
事件規(guī)則:處理設(shè)備通信生命周期中的各個事件信息,可方便實現(xiàn)設(shè)備狀態(tài)記錄如上下線通知,認(rèn)證連接記錄、消息狀態(tài)記錄如消息計費統(tǒng)計等功能;
資源管理:集中管理外部資源,實現(xiàn)資源復(fù)用,降低管理監(jiān)控復(fù)雜度。
與 EMQ X 其他功能一樣,規(guī)則引擎同樣提供了類似的 HTTP REST API 方便用戶應(yīng)用開發(fā)集成,EMQ X Dashboard ( EMQ X 管理控制臺)中亦實現(xiàn)了規(guī)則引擎的可視化創(chuàng)建、編輯、管理功能。
借助規(guī)則引擎中的消息規(guī)則,用戶可以將設(shè)備到 EMQ X 的消息路由或?qū)懭氲礁黝悢?shù)據(jù)庫、消息隊列、HTTP REST 網(wǎng)關(guān)等對象或資源中,或重新發(fā)送到設(shè)備以實現(xiàn)服務(wù)端計算功能。
規(guī)則引擎提供了基于 SQL 表達(dá)式的數(shù)據(jù)查詢、處理功能,讓您先篩選數(shù)據(jù)并轉(zhuǎn)換消息為預(yù)置格式,再配置后續(xù)處理動作。
SQL 表達(dá)式范例如下:
-- 選擇發(fā)往 "t/a" 主題的消息體中的 name 字段, 過濾條件為 name = 'EMQ' select payload.name as name from "t/a" when name = 'EMQ' -- 選擇發(fā)往 "command/#" 主題的消息體 select payload from "command/#"
消息規(guī)則典型功能與應(yīng)用場景如下:
按照消息的主題進(jìn)行過濾,指定要處理的消息,處理后重新發(fā)布到新主題;
制定篩選條件,針對消息正文特定字段進(jìn)行條件篩選,處理滿足條件的數(shù)據(jù);
將消息正文轉(zhuǎn)換為預(yù)置結(jié)構(gòu)再處理,削減內(nèi)部通信與外部存儲、計算開銷;
使用消息摘要、編碼轉(zhuǎn)換、數(shù)學(xué)運算等多種預(yù)處理方式處理消息正文或消息正文中指定字段,在 Broker 中完成簡單計算以降低操作延遲。
每條消息規(guī)則包含以下屬性:
屬性 | 說明 |
---|---|
Source | 要處理的數(shù)據(jù)流來源,基于 MQTT 主題,使用 SQL 中的 FROM 指令篩選 |
條件 | 針對消息正文(僅限 JSON 信息)、消息上下文信息(如 QoS、Client ID、Username)的條件過濾表達(dá)式,用于確定該條規(guī)則的匹配條件、消息結(jié)構(gòu)。使用 SQL 中的 WHERE 指令查詢 |
處理器 | 針對消息正文(僅限 JSON 信息)、消息上下文信息(如 QoS、Client ID、Username)的選擇表達(dá)式,用于選擇并預(yù)處理指定數(shù)據(jù),規(guī)則引擎內(nèi)置多種預(yù)處理方法如消息摘要、編解碼與編碼轉(zhuǎn)換、簡單數(shù)學(xué)運算,使用 SQL 的子句與 SQL 函數(shù)處理。 |
動作 | 消息命中規(guī)則并處理成功后需要觸發(fā)的動作,指定具體的動作操作如寫入數(shù)據(jù)庫 SQL 語句,發(fā)送到消息隊列的對象、主題。一條規(guī)則可以定義一個或多個動作,實現(xiàn)規(guī)則的多端處理。 |
借助規(guī)則引擎中的事件規(guī)則,用戶可以處理設(shè)備通信生命周期中的各個事件信息,事件規(guī)則典型功能與應(yīng)用場景如下:
設(shè)備各個事件動作 log:,如設(shè)備連接/斷開連接、消息發(fā)布、消息傳送/抵達(dá)/丟棄、設(shè)備訂閱/取消訂閱等事件,用于設(shè)備操作記錄與行為分析;
設(shè)備上下線通知與記錄:監(jiān)聽 client.connected 與 client.disconnected 兩個事件可以實現(xiàn)設(shè)備上下線記錄;
消息狀態(tài)記錄:監(jiān)聽 message 相關(guān)事件可以實現(xiàn)關(guān)鍵消息指令狀態(tài)監(jiān)測如下發(fā)成功/失敗回調(diào)等。
功能 | 說明 | 開源版 | 商業(yè)版 |
---|---|---|---|
基礎(chǔ)功能 | |||
條件篩選 | 通過事件名稱、上下文信息、消息內(nèi)容進(jìn)行條件篩選,選擇要處理的消息流 | 支持 | 支持 |
預(yù)處理 | 通過內(nèi)置處理函數(shù)實現(xiàn)消息的簡單數(shù)學(xué)計算、字符處理、編解碼能力,輸出預(yù)置格式的消息 | 支持 | 支持 |
資源管理 | 通過內(nèi)置處理函數(shù)實現(xiàn)消息的簡單數(shù)學(xué)計算、字符處理、編解碼能力,輸出預(yù)置格式的消息 | 支持 | 支持 |
消息輸出 | |||
發(fā)布到指定主題 | 將規(guī)則處理后的消息重發(fā)布(republish)到指定主題進(jìn)行載處理或供訂閱端使用 | 支持 | 支持 |
發(fā)送到 WebHook | 將消息發(fā)布到 HTTP API 網(wǎng)關(guān) | 支持 | 支持 |
發(fā)送到消息隊列 | 支持 Kafka、RabbitMQ 等私有或公有云消息中間件 | 支持 | |
寫入到數(shù)據(jù)庫 | 包括 MySQL、PostgreSQL、MongoDB、Redis 等私有或公有云數(shù)據(jù)庫 | 支持 | |
發(fā)送到另一個 MQTT Broker | 通過 MQTT 協(xié)議將消息發(fā)布到另一個 MQTT Broker 指定主題,包括但不限于 EMQ X、Azure IoT Hub、AWS IoT、阿里云物聯(lián)網(wǎng)平臺 | 支持 | |
擴(kuò)展定制 | |||
處理功能定制 | 定制私有內(nèi)置處理函數(shù),靈活處理私有協(xié)議、特殊編碼消息 | 支持 | |
消息輸出定制 | 定制私有消息輸出方式,規(guī)則輸出端更靈活 | 支持 |
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。