EMQ规则引擎

场景

IOT设备上报数据中,需要帮助我们去刷选出符合我们业务需求的数据,例如电量小于30%、多设备通讯需要知道设备的上下线状态等。

规则引擎概述

EMQ提供了开源的规则引擎,使用WebHook资料类型,将数据发送到Web服务。企业版支持更多方式。
下图是EMQ规则引擎架构 :
基于SQL、动态配置EMQX消息流与设备事件的处理、响应规则,进行消息存储、事件处理。
EMQ规则引擎_第1张图片
当设备发送消息时,消息路由正常流转,发布到消息订阅者应用上,与此同时EMQ还会将消息流转到规则引擎,规则引擎进行刷选、匹配、处理,最后将符合条件的数据进行输出到MYSQL、HTTP等动作里面。

最小规则

  • 触发事件 : 规则通过事件触发,触发时事件给规则注入事件的上下文信息,通过SQL的FROM字句指定事件类型;
  • 处理规则(SQL) : 使用SELECT 字句和 WHERE字句以及内置处理函数,从上下文信息中过滤和处理数据
  • 响应动作 : 如果有处理结果输出,规则将执行响应的动作,如持久化到数据库、重新发布处理后的消息、转发消息到消息队列等,一条规则可以配置多个响应动作。

事件主题

EMQ规则引擎_第2张图片

动作

十余种,例保存到MYSQL、转发到kafka、Redis、HTTP等

更多EMQ规则引擎介绍详见文档 : 官方文档

管理设备上下线

首先在EMQ的 Dashboard 页面创建规则,$events/client_connected 为设备上线事件、$events/client_disconnected 为设备下线事件。两者应在FROM字句后。

  • 创建设备上线规则SQL :
    SELECT clientid, connected_at FROM "$events/client_connected"

  • 创建设备下线规则SQL:
    SELECT clientid, disconnected_at FROM "$events/client_disconnected"

  • 创建响应动作,以webhook为例:
    EMQ规则引擎_第3张图片
    点击保存,我们就可以收到设备上下线的消息了。

你可能感兴趣的:(和光同尘,java)