EMQ X Enterprise 新功能 Rule Engine 介绍

EMQ X Enterprise Rule Engine

Rule Engine (以下简称规则引擎) 用于配置 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、阿里云物联网平台 支持
扩展定制
处理功能定制 定制私有内置处理函数,灵活处理私有协议、特殊编码消息 支持
消息输出定制 定制私有消息输出方式,规则输出端更灵活 支持

更多信息请访问我们的官网 emqx.io,或关注我们的开源项目 github.com/emqx/emqx ,详细文档请访问 官方文档
[图片描述][2]

原文地址:https://www.cnblogs.com/emqx/p/11400628.html

时间: 2024-11-08 21:30:19

EMQ X Enterprise 新功能 Rule Engine 介绍的相关文章

Hive新功能 Cube, Rollup介绍

说明:Hive之cube.rollup,还有窗口函数,在传统关系型数据(Oracle.sqlserver)中都是有的,用法都很相似. GROUPING SETS GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起来,下面是几个实例可以帮助我们了解, 以acorn_3g.test_xinyan_reg为例: [[email protected] xjob]

TFS 2015新功能之一,当前迭代查询标记

TFS 2015发布在即,有幸作为MVP提前获得了TFS的RTM版本,下面就TFS 2015的新功能做一些介绍:   TFS 2015新功能之一,当前迭代查询标记 在TFS的查询中,可以将"迭代路径"做为筛选条件获得需要的工作项.但是在实际使用过程中,经常需要将当前迭代作为筛选条件,例如需要获取当前迭代为完成的任务:而当前迭代是经常变化的,进入到下一个月后,当前迭代就变了,如果工作项查询条件不支持自动变化,则查询出来的结果还是上一个迭代的工作项,不得不手动去修改查询条件,设置为当前的迭

jQuery 3.0:10个炫酷新功能

摘要:JQuery 3.0终于来了.自从2014年10月开始,web开发人员社区就一直在等待这次重大更新.2016年6月,在千呼万盼之中,它终于来到了我们面前. JQuery 3.0终于来了.自从2014年10月开始,web开发人员社区就一直在等待这次重大更新.2016年6月,在千呼万盼之中,它终于来到了我们面前. jQuery 3.0的版本说明中表示,这是一个更轻巧.速度更快的jQuery,而且保持着向后兼容的特性.在这篇文章中,我们将会窥探一下jQuery 3.0的一些新特性,了解一下它给J

MFC界面库BCGControlBar v25.0新功能详解一:可视化主题

BCGControlBar Pro for MFC最新试用版下载请猛戳>>> 亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v25.0正式发布!我们为您提供开发桌面应用最简单.最有效的方法!接下来几篇文章将对这个版本的新功能一一进行介绍,让您对BCG这个控件有一个全新的认识和了解.需要最新版的可以点击这里[BCG下载] 1. 实现全新的Office 2016 Black主题.虽然MS O

友盟新功能介绍:在线参数-备用

作为开发者您是否也碰到过这些挠头问题: 刚上线不久的应用就要修改说明文字?应用添加广告后,如何平衡用户流失和广告收入情况?如何对游戏中的道具进行合理定价? 为帮助开发者告别频繁地更新应用版本,更好的比较版本之间的用户行为及习惯,友盟针对Android开发者新推出在线参数功能.通过在线参数功能,开发者可以远程动态修改应用中的参数值,灵活调整运营策略.iOS版本近期推出. 获得更多信息和体验在线参数功能请访问www.umeng.com 什么是在线参数 在线参数是友盟推出的新功能,可以让您动态修改应用

Red Hat Enterprise Linux 7的新功能

?? 简介红帽最新版本的旗舰平台交付显著增强的可用性. 性能和可靠性. 丰富的新功能为架构. 系统管理员和开发人员提供所需的资源以更高效地进行创新和管理.架构师: 红帽® 企业 Linux® 7 适合您选择的任意基础架构, 它可以高效地与其他操作环境. 身份验证和管理系统集成到一起. 无论您是要构建网络密集型应用程序. 可大规模扩展的数据资料库, 亦或是一次构建而成但会频繁部署的并在物理. 虚拟和云环境中表现良好的解决方案, 红帽企业 Linux 7 都提供了必要的功能来支持您的项目.系统管理员

Kafka 0.11版本新功能介绍 —— 空消费组延时rebalance

在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer instance启动的时间不可控,很有可能超出coordinator确定的rebalance timeout(即max.poll.interval.ms),而每次rebalance的代价又相当地大,因为很多状态都需要在rebalance前被持久化,而在rebalance后被重新初始化.曾经有个国外用户,他有100个consumer,每次rebalance的时间甚至要1个

AndroidStudio3.0 下载使用新功能介绍

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> AndroidStudio3.0 下载使用新功能介绍 - 天平 - 博客频道 - CSDN.NET 天平 向着目标一步一步走. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &

ActiveReports 9 新功能:可视化查询设计器(VQD)介绍

原文:ActiveReports 9 新功能:可视化查询设计器(VQD)介绍 在最新发布的ActiveReports 9报表控件中添加了多项新功能,以帮助你在更短的时间里创建外观绚丽.功能强大的报表系统,本文将重点介绍可视化数据查询设计器,无需手动编写任何SQL语句,主要内容如下: (一)访问可视化查询设计器 (二)可视化查询设计器包含的元素 可视化查询设计器提供的图形界面使用交互的创建查询和预览结果的方法帮助用户更简单的绑定数据.使用可视化查询设计交互界面,帮助不熟悉SQL的用户更容易的设计,