标签:复杂 字符处理 使用 协议 取消 开发测试 需要 设备状态 tcp 协议
Rule Engine (以下简称规则引擎) 用于配置 EMQ X 消息流与设备事件的处理、响应规则。作为 2019 年度 EMQ X 新增重量级功能,规则引擎不仅提供了清晰、灵活的"配置式"的业务集成方案,用于简化业务开发流程,提升用户易用性,降低业务系统与 EMQ X 的耦合度;也为 EMQ X 的私有功能定制提供了一个更优秀的基础架构,提升开发交付速度。
规则引擎开源版本提供了基础处理能力,已集成在 EMQ X v3.1.0 中发布。功能更灵活完备、可用性定制性更强的规则引擎正在紧密开发测试,计划集成在下一 EMQ X 商业版中发布。
规则引擎典型应用场景举例:
Rule Engine 工作示意图
规则引擎通过嵌入在 EMQ 的消息转发过程中对数据进行过滤、转换和丰富,实现高效的数据处理。新的规则引擎涵盖了 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/#"
消息规则典型功能与应用场景如下:
每条消息规则包含以下属性:
属性 | 说明 |
---|---|
Source | 要处理的数据流来源,基于 MQTT 主题,使用 SQL 中的 FROM 指令筛选 |
条件 | 针对消息正文(仅限 JSON 信息)、消息上下文信息(如 QoS、Client ID、Username)的条件过滤表达式,用于确定该条规则的匹配条件、消息结构。使用 SQL 中的 WHERE 指令查询 |
处理器 | 针对消息正文(仅限 JSON 信息)、消息上下文信息(如 QoS、Client ID、Username)的选择表达式,用于选择并预处理指定数据,规则引擎内置多种预处理方法如消息摘要、编解码与编码转换、简单数学运算,使用 SQL 的子句与 SQL 函数处理。 |
动作 | 消息命中规则并处理成功后需要触发的动作,指定具体的动作操作如写入数据库 SQL 语句,发送到消息队列的对象、主题。一条规则可以定义一个或多个动作,实现规则的多端处理。 |
功能 | 说明 | 开源版 | 商业版 |
---|---|---|---|
基础功能 | |||
条件筛选 | 通过事件名称、上下文信息、消息内容进行条件筛选,选择要处理的消息流 | 支持 | 支持 |
预处理 | 通过内置处理函数实现消息的简单数学计算、字符处理、编解码能力,输出预置格式的消息 | 支持 | 支持 |
资源管理 | 通过内置处理函数实现消息的简单数学计算、字符处理、编解码能力,输出预置格式的消息 | 支持 | 支持 |
消息输出 | |||
发布到指定主题 | 将规则处理后的消息重发布(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]
EMQ X Enterprise 新功能 Rule Engine 介绍
标签:复杂 字符处理 使用 协议 取消 开发测试 需要 设备状态 tcp 协议
原文地址:https://www.cnblogs.com/emqx/p/11400628.html