MQTT Broker 规则引擎入门:快速指南

news2024/12/26 23:03:07

引言

规则引擎是一种能够根据输入数据按照预设规则进行决策或执行动作的软件系统。本文将向您介绍 EMQX MQTT Broker 的规则引擎功能,并阐述其在 MQTT 消息转换和数据集成方面的重要作用。同时,我们还将提供一份快速入门指南,通过实例帮助您快速上手 MQTT 规则引擎。

MQTT 的规则引擎是什么?

MQTT 是一种高效可靠的消息传输协议,特别适用于低带宽、高延迟网络(在物联网领域十分常见)。在 MQTT 的发布/订阅模型中,MQTT Broker 扮演着关键角色,负责接收发布者发送的消息并将其可靠高效地分发给订阅者,确保消息的顺利传递。

MQTT 规则引擎是一种可以针对 MQTT 消息制定和执行规则的组件。该规则引擎具备提取、过滤、加工和转换 MQTT 消息的能力,并且可以在满足特定条件时触发相应的动作。通过规则引擎的应用,可以减少人工干预,提高数据集成和应用开发的效率。

MQTT Broker 中规则引擎的应用场景

规则引擎在 MQTT Broker 中有着广泛的应用,可以实现任务自动化、系统监控、效率提升和安全保障。例如:

  • 在智能家居自动化中,规则引擎可以实现一些任务的自动化,比如根据人员进出房间的情况自动开关灯,或者根据不同时间段调节室温。既可以节省能源,也可以让居住者享受更加便捷的生活体验。
  • 在工业物联网应用中,它可以监控和控制复杂的系统,比如制造流程或电网。通过制定相应的规则,规则引擎可以发现和处理异常,从而避免设备故障,提高系统性能。
  • 在医疗保健行业中,它可以监测患者的健康状态,并及时向医护人员报告可能存在的问题,帮助医护人员更好地关注患者的健康状况,及时采取必要的治疗措施,提高医疗保健的效果和质量。

EMQX 开箱即用的内置规则引擎

EMQX 是一个开源、高度可扩展的 MQTT Broker,内置了规则引擎组件。它让用户可以用低代码的方式快速构建数据处理的业务逻辑,从而降低了软件架构的复杂度。

我们选择在 Broker 内部嵌入规则引擎功能,而不是依赖 Broker 外部的独立的规则引擎,有两个原因:

  • 首先,Broker 内部的规则引擎可以实现更高效和流畅的通信。规则引擎可以直接获取 MQTT 消息,无需额外的通信渠道或协议,这降低了延迟,提升了系统性能。
  • 其次,这可以让整个系统的部署和管理更加简单。将规则引擎和 Broker 作为统一的组件部署在一起,无需分别进行集成和管理,从而简化了部署过程,减少了系统复杂度。

规则引擎快速入门

这里我们将以 EMQX Enterprise 为例,以便使用企业版提供的各种数据集成动作和资源。

下载 EMQX Enterprise

根据您的操作系统类型,在这里下载 EMQX Enterprise。

在下拉列表中选择最新版的 EMQX Enterprise 4.4:

下载 EMQX Enterprise

EMQX Enterprise 的默认许可证支持最多 10 个 MQTT 连接,对于我们体验规则引擎的功能来说已经足够了。如果您需要更多的 MQTT 连接,请点击“下载”按钮下方的链接申请 15 天免费试用。

这里我们以 Ubuntu 20.04 为例,下载 EMQX Enterprise 4.4.17 安装包:

$ wget https://www.emqx.com/en/downloads/enterprise/4.4.17/emqx-ee-4.4.17-otp24.3.4.2-1-ubuntu20.04-amd64.zip
$ unzip emqx-ee-4.4.17-otp24.3.4.2-1-ubuntu20.04-amd64.zip

接下来,我们启动 EMQX Broker:

$ cd emqx
$ ./bin/emqx start

使用 EMQX Cloud 体验我们的云上 MQTT Broker

如果您不想安装 Linux 操作系统、下载和安装 EMQX,或者执行任何 Linux 命令的话,您可以使用 EMQX Cloud 来体验规则引擎功能。您只需在网页上进行一些简单的配置即可。

配置一条简单规则将 MQTT 消息转发到其它主题

需求

我们假设有个用户名为 “Steve” 的设备周期性地向 notify 主题发送 JSON 格式的消息。下面是该设备发送的一条示例消息:

{"city": "Stockholm", "value": 21}

我们希望从原始消息中提取 value 字段值,并用它构造一条带有 temperature 字段的新消息,然后根据原始消息中的 city 字段值,将新消息动态转发到相应的 MQTT 主题,比如,上述示例消息将被转发到主题 city/Stockholm

{"temperature": 21}

为规则编写 SQL

既然我们已经明确了需求,就让我们打开 EMQX Dashboard(http://localhost:18083)来创建一个规则吧(仪表板的默认用户名/密码是 admin/public)。

在 EMQX Dashboard 中创建规则

为了实现上述需求,我们需要编写如下 SQL 语句:

SELECT
   payload.city as city,
   payload.value as val
FROM
   "notify"
WHERE
   username = 'Steve'

我们只关注主题为 notify 的消息,因此在 FROM 子句中指定了它。WHERE 子句用于筛选出 username 字段等于 Steve 的消息。

SELECT 语句将原始消息中 cityvalue 字段的值分别赋给了两个新变量:cityval。这两个变量将在接下来创建动作时使用。

为规则绑定 Republish 动作

接下来,我们需要为规则绑定 Republish 动作,并设置动作的参数:

  • 目标主题:city/${city}
  • 载荷模板:{"temperature": ${val}}

为规则绑定 Republish 动作

在前一节中,SELECT 语句将 payload.citypayload.value 的值分别赋给了两个新变量:cityval。我们的 Republish 动作使用 ${city}${val} 占位符来引用这些变量,规则引擎会在执行时将变量的值替换到相应的位置。

测试规则

规则和动作创建完毕后,我们可以向 Broker 发送满足条件的消息来检验规则是否生效。

我们将使用 MQTTX 这款 MQTT 客户端工具来进行测试。您可以从这里下载并安装它。

首先,我们建立一个 MQTT 连接,将用户名设为 “Steve”。

使用 MQTTX 客户端建立一个 MQTT 连接

然后,我们订阅目标主题 city/Stockholm,并向 notify 主题发送一条消息:

发布 MQTT 消息

成功了!我们收到了由规则转发过来的消息:

成功接收 MQTT 消息

结语

MQTT 规则引擎是一种强大的工具,可以根据物联网应用中的特定条件或事件自动触发动作。通过本文的快速入门指南和示例,您可以轻松上手 EMQX 规则引擎,在物联网项目中充分发挥它的优势。

EMQX Enterprise 规则引擎提供了丰富的数据集成动作和资源,可以快速高效地完成大部分与数据处理相关的业务逻辑。我们强烈推荐您自己探索和体验。有关规则引擎 SQL 语法的详细文档,请参考 Rule SQL 文档。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/getting-started-with-rule-engine-in-mqtt-broker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Cloud】Gateway的配置与使用

Gateway其实是springcloud 原生的东西,但是我还是想放在这里讲,因为我们使用nacos时,前端调用服务之后,一般会调用到我们的网关上面,然后网关选择我们的nacos服务,再调用后端的服务 文章目录 🌏…

极客故事|AI Hackathon:从每一个微小的时刻开始

上周末,由 SegmentFault 思否和 ONES 主办,SegmentFault AI Hackathon 杭州站暨思否 11 周年特别活动在杭州圆满结束。大赛延续 Hack with AI, Rebuild Everything with AI 的主题,鼓励开发者使用 Generative AI 技术构建创新应用&#xff0c…

UDP和TCP网络编程

UDP和TCP网络编程 UDP网络编程UDP通信流程(回显服务)测试扩展《UDP字典查找单词》 TCP网络编程TCP互相通信测试 缓存区和缓存 UDP网络编程 特点: 无连接:发送数据前不需要建立连接。不可靠:没有重发机制,无…

2023下半年杭州/广州/深圳软考(中/高级)认证,近期开班

软考是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成…

一分钟让你轻松拿捏 求解斐波那契数列!

文章目录 斐波那契数列的概念递归求解第N个斐波那契数迭代求解第N个斐波那契数递归法和迭代法的比较 斐波那契数列的概念 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(LeonardodaFib…

windows10企业版安装西门子博途V15---01准备环境

网上看到了很多博途安装的文章或视频,一大部分都是你抄抄,我抄抄,滥鱼充饥,一是文章思路不清晰,二是具体安装环境不一致,三是视频讲解混乱,视频不清楚,操作有错误,其中不…

mac外接硬盘在哪里打开 mac外接硬盘用什么格式

Mac电脑具有出色的兼容性和高度的易用性,使得连接外接硬盘变得非常简单。但是,如果你不知道如何打开外接硬盘或者外接硬盘应该使用哪种格式,那么这将成为你使用Mac电脑过程中的一个难题。本篇文章将会向你介绍在Mac上如何打开外接硬盘&#x…

SpringCloud: SpringCloud面试题 ④

前言:面试题是一个以信息整合性看技术特性的一个手段。 1、什么是SpringCloud? springCloud是一系列框架的有序整合。目的在于大规模、分布式、微服务应用部署的解决方案。 2、什么是微服务? 微服务是将一个大而全的业务系统按照一定的业务…

机器学习与深度学习——基于潜在语义分析(LSA)的文档相似度计算

机器学习与深度学习——基于潜在语义分析(LSA)的文档相似度计算 基于潜在语义分析(LSA)是一种使用数学和统计方法来分析文本数据的技术。该技术可用于发现文本之间的关系,以及为文本提供有关其含义的更深层次的信息。…

【twcc】学习1:cc-feedback包构造及其接收处理

我的代码是m79,大神的代码看起来比我的新。核心的 ProcessTransportFeedbackInner 竟然没有找到。 webrtc源码分析(8)-拥塞控制(上)-码率预估 再次膜拜一下大神的分析。 本文大量引用大神的论述。 cc-controller下最重要的几个函数来介绍码率控制的核心过程,其分别是OnProce…

perf之cpu性能计数器

在win10主机上的VMware虚拟机里的centos7执行 perf list cache,显示空: [workcontrol-plane ~]$ perf list cache List of pre-defined events (to be used in -e): [workcontrol-plane ~]$ 原因是cpu cache的计数需要硬件支持,在虚拟机里…

使用omp和mpi并行技术实现蒙特卡罗算法实验 (MonteCarlo)

蒙特卡洛算法思想: 画一个正方形和一个内切圆然后在图形上面随机撒点,数一下落在圆 内和正方形内的点的数量之比,就是二者面积之比, 也就是π/4。 大数定理告诉我们,随着样本数量的增大,我们用这种方式模拟出来的值应该是越来越…

玩转电脑|带你了解如何快速查看电脑开关机时间

目录 前言 1、打开管理 2、打开事件查看器 3、打开windows日志 5、获取开机事件 6、获取关机事件 7、保存事件 8、保存事件文件 9、打开事件文件 前言 最近因为一些原因作者想要查看自己电脑每天的的开关机时间记录,但是不知道怎么进行查看,于是在网…

C++重温笔记(十): C++输入输出流

1. 写在前面 c在线编译工具,可快速进行实验: https://www.bejson.com/runcode/cpp920/ 这段时间打算重新把c捡起来, 实习给我的一个体会就是算法工程师是去解决实际问题的,所以呢,不能被算法或者工程局限住,应时刻提…

龙智携手Atlassian亮相DevOps国际峰会:释放团队潜力,以协作挑战不可能

2023年6月29日到30日,龙智将亮相DevOps国际峰会 北京站213展位。本次参展,我们将呈现Atlassian ITSM、DevOps以及工作管理三大解决方案,帮助您释放团队的力量,将不可能变成可能。 立即预约龙智专家面对面交流>>> 龙智自…

BuildAdmin商业级后台管理系统

🚀 CRUD代码生成 图形化拖拽生成后台增删改查代码,自动创建数据表,大气实用的表格、多达22种表单组件支持、拖拽排序、受权限控制的编辑和删除、支持关联表等等,可为您节省大量开发时间。[ 视频介绍 | 使用文档 ] 💥 内置WEB终端 我们内置了WEB终端以实现一些理想中的…

[算法前沿]--019-医学AIGC大模型的构建

基于主动健康的主动性、预防性、精确性、个性化、共建共享、自律性六大特征[1],华南理工大学未来技术学院-广东省数字孪生人重点实验室开源了中文领域生活空间主动健康大模型基座ProactiveHealthGPT,包括:(1) 经过千万规模中文健康对话数据指令微调的生活空间健康大模型扁鹊…

绿色零碳节群硕获奖,为可持续发展提供数字化抓手

6月15日,为探索迈向碳中和之路,第二届国际零碳节暨2023ESG领袖峰会盛大召开。各大绿色品牌与科技集团纷纷现身北京,展示低碳生产与绿色发展的科技成果。群硕也携带创新数字化产品与解决方案亮相国际绿色零碳节,并荣获2023绿色可持…

文献阅读:智能网联环境下面向语义通信的资源分配

目录 智能网联环境下面向语义通信的网络架构模型驱动和数据驱动资源分配算法对比计算卸载和协同计算未来研究方向参考文献 智能网联环境下面向语义通信的网络架构 车辆借助车联网将基于语义理解的计算任务进一步卸载到计算资源丰富的移动边缘计算服务器(通常部署在路…

忆联主导消费级存储权威标准制定,推动行业规范化发展

近日,由记忆科技旗下公司忆联主导的团体标准《消费级固态硬盘可靠性及环境适应性规范》(以下简称:规范)研讨会顺利召开。此次会议完善了《规范》中的相关内容与细节,以确保消费级固态硬盘在可靠性方面能更进一步地满足…