规则引擎简介 - EMQ X的新功能企业EMQ X企业规则引擎 消息RuleEvent规则 附件:规则引擎功能列表数据库
EMQ X企业规则引擎 EMQ X规则引擎用于配置 EMQ X消息或事件的处理和响应规则。做为EMQ X在2019年的一项新的重要功能,规则引擎不只提供了清晰灵活的“可配置”业务集成解决方案,还用于简化业务开发流程,提升可用性,并下降业务系统与业务系统之间的耦合程度。 EMQ X,但也为EMQ X的私有功能定制提供了更好的基础设施,以加快开发交付。服务器
规则引擎的开源版本提供了基本的处理功能,并已集成到EMQ X v3.1.0中。正在开发一种更灵活,更实用和可定制的规则引擎用于测试,计划在下一个EMQ X企业版中发布。网络
规则引擎的典型应用场景示例以下: ·动做监听:智能家居智能门锁的开发,因为网络或电源故障致使门锁功能异常,人为损坏等缘由。经过使用规则引擎配置监控离线事件,能够将故障信息推送到应用服务,实现接入层首次故障检测的能力。架构
·数据过滤:车辆网络的卡车车队管理。车辆传感器收集并报告大量运行数据。应用平台仅关注车速大于40 km / h的数据。在这种状况下,规则引擎可用于有条件地过滤消息到服务,而且知足条件的数据能够写入业务消息队列。函数
·消息路由:在智能计费应用中,终端设备经过不一样的主题区分服务类型。经过配置规则引擎,能够将计费服务的消息链接到计费消息队列,而且能够将非计费信息链接到其余消息队列,以实现业务消息的路由配置。测试
·消息编码和解码:在公共协议/专有TCP协议访问和工业控制等应用场景中,二进制/特殊格式消息体的编码和解码能够经过规则引擎的本地处理功能完成(能够是在EMQ X上定制和开发。相关消息也能够经过规则引擎路由到外部计算资源,例如用于处理的功能计算(处理逻辑能够由用户开发),而且消息能够转换为易于业务处理的JSON格式,这简化了难度项目集成,提升应用程序的快速开发和交付能力。编码
规则引擎工做图插件
规则引擎经过嵌入EMQ的消息转发过程来过滤,转换和丰富数据,以实现高效的数据处理。新规则引擎涵盖EMQ X 中多个插件的功能,集中管理原始插件中的独立外部资源 ,从而实现资源重用,下降管理和监听复杂度。同时,规则引擎构建到EMQ X中的大多数计算只能在应用程序端执行。经过计算,筛选和过滤高价值数据以提升消息处理效率,简化了业务架构,减小了数据传输路径,减小了消息处理延迟。3d
规则引擎相关功能包括: ·消息规则:处理从设备到EMQ X的消息,实现条件计算和过滤,消息结构调整,消息从新分配,持久性和桥接;日志
·事件规则:处理设备通讯生命周期中的事件信息,实现设备状态记录功能,包括在线或离线通知,认证链接记录,消息计费统计等消息状态记录。
·资源管理:集中管理外部资源,实现资源重用,下降管理收听复杂度。
与EMQ X的其余功能同样,规则引擎也提供相似的HTTP REST API,以便于用户集成应用程序开发。规则引擎的可视化建立,编辑和管理功能也在EMQ X仪表板中实现
消息规则 借助规则引擎中的消息规则,用户能够将消息从设备路由到EMQ X,或者将消息写入对象或资源(如各类数据库,消息队列,HTTP REST网关),或者将它们从新发送到服务器设备 - 计算。
规则引擎提供基于SQL表达式的数据查询和处理功能,容许用户在配置后续处理操做以前过滤数据并将消息转换为预设格式。
SQL表达式的示例以下:
在发送到“t / a”主题的消息正文中选择名称字段,其中过滤条件为name ='EMQ', 选择payload.name做为名称来自“ message.publish“where topic ='t / a'和name ='EMQ'
选择发送到“command /#”主题的消息体 从“command /#”中选择有效负载
消息规则的典型功能和应用场景以下:
·按消息主题过滤,指定要处理的消息,并在处理后从新发布到新主题;
·制定有条件筛选信息机构特定领域的筛选标准,以处理知足条件的数据;
·将消息体转换为预设结构进行处理,减小内部通讯资源和外部存储和计算;
·使用预处理方法(如消息摘要,编码转换和数学运算)处理消息正文中的消息正文或指定字段,并在Broker中执行简单计算以减小操做延迟。
每条消息规则都包含如下属性:
属性描述 Source基于MQTT主题,使用SQL中的FROM命令筛选要处理的数据流的源 条件条件过滤表达式为消息体(仅限JSON信息)和消息上下文信息(如QoS,客户端ID,用户名),用于肯定规则的匹配条件和消息结构,使用 SQL中的WHERE命令进行查询。| 消息正文的处理器选择表达式(仅限JSON信息)和用于选择和预处理指定数据的消息上下文信息(如QoS,客户端ID,用户名)。多种内置预处理方法,如消息摘要,编码和解码以及编码转换,规则引擎中的简单数学运算,使用SQL子句和SQL函数进行处理。 操做在消息到达规则并成功处理以后须要触发的操做,指定特定的操做操做,例如编写数据库SQL语句,发送到消息队列的对象和主题。规则能够定义一个或多个动做以实现规则的多端处理。
事件规则 使用规则引擎中的事件规则,用户能够在设备通讯生命周期中处理各类事件信息。事件规则的典型功能和应用场景以下:
·设备事件动做日志:例如设备链接/断开,消息发布,发送/到达/丢弃,设备订阅/取消订阅等,用于设备操做记录和行为分析;
·设备在线和离线通知和记录:侦听client.connected和client.disconnected两个事件,可用于记录设备的在线和离线状态;
·消息状态记录:监听消息相关事件能够实现密钥消息命令状态监控,例如“发出成功/失败回调”。