规则引擎
EMQ X Rule Engine (以下简称规则引擎) 用于配置 EMQ X 消息流与设备事件的处理、响应规则。规则引擎不仅提供了清晰、灵活的 “配置式” 的业务集成方案,简化了业务开发流程,提升用户易用性,降低业务系统与 EMQ X 的耦合度;也为 EMQ X 的私有功能定制提供了一个更优秀的基础架构。
EMQ X 在 消息发布或事件触发 时将触发规则引擎,满足触发条件的规则将执行各自的 SQL 语句筛选并处理消息和事件的上下文信息。
适用版本: EMQ X v3.1.0+
兼容提示: EMQ X v4.0 对规则引擎 SQL 语法做出较大调整,v3.x 升级用户请参照 迁移指南 进行适配。
EMQ X 规则引擎快速入门
此处包含规则引擎的简介与实战,演示使用规则引擎结合华为云 RDS 上的 MySQL 服务,进行物联网 MQTT 设备在线状态记录、消息存储入库。
从本视频中可以快速了解规则引擎解决的问题和基础使用方法。
消息发布
规则引擎借助响应动作可将特定主题的消息处理结果存储到数据库,发送到 HTTP Server,转发到消息队列 Kafka 或 RabbitMQ,重新发布到新的主题甚至是另一个 Broker 集群中,每个规则可以配置多个响应动作。
选择发布到 t/# 主题的消息,并筛选出全部字段:
SELECT * FROM "t/#"
选择发布到 t/a 主题的消息,并从 JSON 格式的消息内容中筛选出 “x” 字段:
SELECT payload.x as x FROM "t/a"
事件触发
规则引擎使用 $events/ 开头的虚拟主题(事件主题)处理 EMQ X 内置事件,内置事件提供更精细的消息控制和客户端动作处理能力,可用在 QoS 1 QoS 2 的消息抵达记录、设备上下线记录等业务中。
选择客户端连接事件,筛选 Username 为 ‘emqx’ 的设备并获取连接信息:
SELECT clientid, connected_at FROM "$events/client_connected" WHERE username = 'emqx'