溫馨提示×

溫馨提示×

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

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

EMQ X Enterprise 新功能Rule Engine如何理解

發(fā)布時間:2022-01-14 17:10:33 來源:億速云 閱讀:124 作者:柒染 欄目:互聯(lián)網(wǎng)科技

EMQ X Enterprise 新功能Rule Engine如何理解,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

EMQ X Enterprise Rule Engine

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 工作示意圖

EMQ X Enterprise 新功能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)建、編輯、管理功能。

EMQ X Enterprise 新功能Rule Engine如何理解

EMQ X Enterprise 新功能Rule Engine如何理解

消息規(guī)則

借助規(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ī)則引擎中的事件規(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)等。

附:規(guī)則引擎功能列表
功能說明開源版商業(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è)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(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)容。

AI