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