Skip to content

规则引擎 ​

1. 规则定义 ​

规则引擎是 FMQ内置的数据处理功能,它使用 SQL 语句编排规则,并通过消息、客户端事件以及外部数据系统触发,无需编写代码即可实现一站式的 IoT 数据提取、过滤、丰富和转换处理,并将处理完成后的数据输出到动作或外部数据系统中。

规则提供了强大的数据集成能力,配合连接器,动作组合使用,基于SQL语句的编排规则,无需编写代码即可实现一站式的 IoT 数据提取、过滤、转换、存储与处理,以加速应用集成和业务开发。

规则定义页面截图

2. 规则组成 ​

规则引擎组成由 连接器、动作、SQL编排 三项编辑而成。

规则组成页面截图

描述了 MQTT数据来源、数据匹配处理、数据路由的一个过程

  • MQTT数据来源:规则的数据源可以是消息或事件,规则通过 SQL 的 FROM 子句指定数据的来源;
  • 数据匹配处理:规则通过SQL编排语句。SQL 的 WHERE 子句用于过滤数据,SELECT 子句以及 SQL 函数用于提取和转换数据;
  • 数据路由:规则可以定义一个或多个动作来处理 SQL 的输出结果。如果 SQL 执行通过,规则将按顺序执行相应的动作,将结果发送到外部数据系统中,如 rocketmq,Kafka,MQTT服务 等。

3. 规则SQL示例 ​

规则SQL指定数据的来源

数据源是MQTT事件

sql
select
  *
from
"$events/client_connected"
where  topic  =~ '/property/post'
  • 数据来源:事件 ,连接成功事件 "$events/client_connected"
  • 数据匹配:根据topic匹配数据,这里使用 =~ 匹配包含 property/post 的所有主题
  • 数据选择: * ,表示匹配所有连接成功事件的所有字段

数据源是消息

sql
SELECT
    payload,
    clientId
FROM
    "test/abc"
WHERE
    clientId = "fastbee"
  • 数据来源:消息 ,匹配主题为 test/abc主题消息
  • 数据匹配:根据 clientId 筛选 为 fastbee 的值
  • 数据选择: 这里获取 clientId 、payload 两个字段

4. 常见问题 ​

4.1. 规则没有触发怎么办? ​

先确认规则处于启用状态,再检查 SQL 的 FROM 主题或事件是否与实际消息一致(可用 =~ 模糊匹配主题),最后确认消息确实到达了 FMQ(可用客户端订阅相同主题验证)。

4.2. SQL 执行成功但动作没有输出? ​

动作按顺序执行。先检查动作配置的目标地址、鉴权参数与网络连通性;若输出到外部数据系统(Kafka、RocketMQ、MQTT 服务等),确认对应连接器已创建且连接正常。

4.3. 事件主题和消息主题有什么区别? ​

消息主题(如 test/abc)来自客户端发布的业务消息;事件主题(如 "$events/client_connected")来自客户端连接、断开等系统事件。两者的 SQL 写法相同,只是 FROM 的数据来源不同。

蜂信物联 | fastbee.cn