ThingsBoard规则链节点:AWS SQS 节点详解

news2024/11/24 7:05:53
引言

ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,AWS SQS 节点用于将消息发送到 Amazon Simple Queue Service (SQS) 队列。

ThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台_哔哩哔哩_bilibiliThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台共计36条视频,包括:1、ThingsBoard项目介绍、2、ThingsBoard前端Vue版本代码编译、3、ThingsBoard本地后端源码编译等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1CH36egEDM/?spm_id_from=333.999.0.0&vd_source=5b535ac3589f53abe431d7f6afc44ff4

1. AWS SQS 节点简介

AWS SQS 节点的主要作用是在规则链执行过程中,将消息发送到 Amazon SQS 队列。Amazon SQS 是一种完全托管的消息队列服务,支持消息的异步传递,适用于解耦和分布式系统之间的通信。通过使用 AWS SQS 节点,可以将设备上报的数据或处理结果发送到 SQS 队列,再由其他服务或系统消费这些消息,实现异步处理和解耦。

2. 节点配置
  • AWS 区域:选择 AWS 服务所在的区域。
  • 访问密钥:提供 AWS 访问密钥,用于身份验证。
  • 秘密密钥:提供 AWS 秘密密钥,用于身份验证。
  • 队列 URL:指定要发送消息的 SQS 队列的 URL。
  • 消息:指定要发送的消息内容,可以是静态文本或动态变量。
2.1 基本配置示例
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/YourQueueName",
  "message": "This is a test message from ThingsBoard"
}
3. 使用场景

AWS SQS 节点在多种场景下都非常有用,特别是在需要实现异步处理和解耦的场景中。以下是一些具体的应用场景:

3.1 数据处理

在需要将设备上报的数据异步处理时,可以通过 AWS SQS 节点将数据发送到 SQS 队列,再由其他服务或系统消费这些消息进行处理。

{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/DataProcessingQueue",
  "message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
3.2 任务调度

在需要调度任务时,可以通过 AWS SQS 节点将任务消息发送到 SQS 队列,再由任务调度系统消费这些消息执行任务。

{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/TaskSchedulingQueue",
  "message": "Task scheduled for device ${msg.deviceId}: ${msg.taskDetails}"
}
3.3 事件通知

在需要发送事件通知时,可以通过 AWS SQS 节点将事件消息发送到 SQS 队列,再由事件处理系统消费这些消息进行通知。

{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/EventNotificationQueue",
  "message": "Event occurred for device ${msg.deviceId}: ${msg.eventType}"
}
4. 实际项目中的应用

下面是一个实际项目中的例子,展示如何在智能家居系统中使用 AWS SQS 节点。

4.1 项目背景

假设我们正在开发一个智能家居系统,该系统需要支持用户通过手机应用控制家中的灯光、空调等设备,并记录设备的状态和使用情况。此外,还需要实现数据处理、任务调度和事件通知功能。

4.2 项目需求
  • 记录设备的状态,例如当前温度、湿度等。
  • 记录设备的使用情况,例如开关次数、能耗等。
  • 实现实时反馈,确保用户能够及时了解操作结果。
  • 将设备上报的数据异步处理。
  • 调度定期任务,例如定时开关设备。
  • 发送事件通知,例如设备故障通知。
4.3 实现步骤
  1. 部署设备

    • 在家中安装智能灯光、空调等设备,并连接到 ThingsBoard 平台。
  2. 创建规则链

    • 添加 AWS SQS 节点,用于将设备上报的数据发送到 SQS 队列,再由其他服务或系统消费这些消息进行处理。
    • 添加其他处理节点,如设备控制、状态查询和数据存储。
  3. 配置规则链

    • 配置 AWS SQS 节点,用于发送数据处理消息。
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/DataProcessingQueue",
  "message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
  • 配置 AWS SQS 节点,用于发送任务调度消息。
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/TaskSchedulingQueue",
  "message": "Task scheduled for device ${msg.deviceId}: ${msg.taskDetails}"
}
  • 配置 AWS SQS 节点,用于发送事件通知消息。
{
  "region": "us-east-1",
  "accessKey": "YOUR_ACCESS_KEY",
  "secretKey": "YOUR_SECRET_KEY",
  "queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/EventNotificationQueue",
  "message": "Event occurred for device ${msg.deviceId}: ${msg.eventType}"
}
  1. 处理数据
    • 根据业务逻辑,动态地发送数据处理、任务调度和事件通知消息。
// 发送数据处理消息
public void sendDataProcessingMessage(String deviceId, String data) {
    // 配置 AWS SQS 节点
    JsonNode config = JsonNodeFactory.instance.objectNode()
        .put("region", "us-east-1")
        .put("accessKey", "YOUR_ACCESS_KEY")
        .put("secretKey", "YOUR_SECRET_KEY")
        .put("queueUrl", "https://sqs.us-east-1.amazonaws.com/123456789012/DataProcessingQueue")
        .put("message", "Device " + deviceId + " reported data: " + data);

    awsSqsNode.sendMessage(config);
}

// 发送任务调度消息
public void sendTaskSchedulingMessage(String deviceId, String taskDetails) {
    // 配置 AWS SQS 节点
    JsonNode config = JsonNodeFactory.instance.objectNode()
        .put("region", "us-east-1")
        .put("accessKey", "YOUR_ACCESS_KEY")
        .put("secretKey", "YOUR_SECRET_KEY")
        .put("queueUrl", "https://sqs.us-east-1.amazonaws.com/123456789012/TaskSchedulingQueue")
        .put("message", "Task scheduled for device " + deviceId + ": " + taskDetails);

    awsSqsNode.sendMessage(config);
}

// 发送事件通知消息
public void sendEventNotificationMessage(String deviceId, String eventType) {
    // 配置 AWS SQS 节点
    JsonNode config = JsonNodeFactory.instance.objectNode()
        .put("region", "us-east-1")
        .put("accessKey", "YOUR_ACCESS_KEY")
        .put("secretKey", "YOUR_SECRET_KEY")
        .put("queueUrl", "https://sqs.us-east-1.amazonaws.com/123456789012/EventNotificationQueue")
        .put("message", "Event occurred for device " + deviceId + ": " + eventType);

    awsSqsNode.sendMessage(config);
}
  1. 前端界面

    • 开发一个前端界面,显示设备的状态和使用情况。
    • 提供一个界面,让用户能够查看和管理设备的状态和使用情况,以及接收通知。
  2. 数据查询

    • 使用 SQL 查询,获取设备的状态和使用情况。
SELECT * FROM device_status WHERE device_id = 'device1' ORDER BY timestamp DESC LIMIT 10;
SELECT * FROM device_usage WHERE device_id = 'device1' ORDER BY timestamp DESC LIMIT 10;
5. 总结

AWS SQS 节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助你将消息发送到 Amazon SQS 队列,实现异步处理和解耦。通过合理地使用 AWS SQS 节点,可以在数据处理、任务调度和事件通知等场景中,确保系统的高效性和灵活性。

     🌐 项目地址

Things Vueicon-default.png?t=O83Ahttp://thingsvue.tpson.cn:7772/#/login?redirect=/tb-home/index

账号:admin@thingsboard.org 
密码:admin123456

🎽 安装使用

获取项目代码:

代码地址icon-default.png?t=O83Ahttps://gitee.com/tpsonwell_admin/thingsvue

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

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

相关文章

在Windows 11上启用远程桌面及其故障排查

在Windows 11上启用远程桌面 这将允许其它设备远程连接到你的电脑,并像坐在你的电脑前一样操纵你的电脑桌面。 启用方法很简单,先在设置中找到远程桌面。 点击进入后,点击右侧的滑钮启用远程桌面即可。 勾选启用网络级别验证使得登录者在能…

【H2O2|全栈】JS进阶知识(八)ES6(4)

目录 前言 开篇语 准备工作 浅拷贝和深拷贝 浅拷贝 概念 常见方法 弊端 案例 深拷贝 概念 常见方法 弊端 逐层拷贝 原型 构造函数 概念 形式 成员 弊端 显式原型和隐式原型 概念 形式 constructor 概念 形式 原型链 概念 形式 结束语 前言 开篇语…

RabbitMQ3:Java客户端快速入门

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

zotero7 插件使用

zotero style 1、下载地址 Zotero 插件商店 | Zotero 中文社区 2、配置 在工具插件里 3、配置 style 进入高级→设置编辑器 查找 easy 设置完即可显示, 注1:easyscholar的密钥要自行申请注册,注册地址:easySchol…

uniapp+vue3+ts H5端使用Quill富文本插件以及解决上传图片反显的问题

uniappvue3ts H5端使用Quill富文本插件以及解决上传图片反显的问题 1.在项目中安装Quill npm i quill1.3.72.需要显示富文本的页面完整代码 <template><view><div ref"quillEditor" style"height: 65vh"></div></view> &…

关于pip install 包 时出现This is an issue with the package mentioned above,not pip的问题

关于This is an issue with the package mentioned above,not pip 今天在用pip下载gensim包的时候&#xff0c;出现了上图中的问题&#xff0c;提示信息是&#xff1a;This is an issue with the package mentioned above,not pip 那说明是包的问题&#xff0c;而不是在使用 pi…

rust中解决DPI-1047: Cannot locate a 64-bit Oracle Client library问题

我们在使用rust-oracle crate连接oracle进行测试的过程中&#xff0c;会发现无法连接oracle&#xff0c;测试运行过程中抛出“DPI-1047: Cannot locate a 64-bit Oracle Client library”错误。该问题是由于rust-oracle需要用到oracle的动态连接库&#xff0c;我们通过安装orac…

软件测试面试之常规问题

1.描述一下测试过程 类似题目:测试的生命周期 思路:这是一个“范围”很大的题目&#xff0c;而且回答时间一般在3分钟之内&#xff0c;不可能非常详细的描述整个过程&#xff0c;因此答题的思路要从整体结构入手&#xff0c;不要过细。为了保证答案的准确性&#xff0c;可以引…

D77【 python 接口自动化学习】- python基础之HTTP

day77 postman接口请求 学习日期&#xff1a;20241123 学习目标&#xff1a;http 定义及实战&#xfe63;&#xfe63;postman接口请求 学习笔记&#xff1a; get请求 post请求 总结 get请求用于查询数据post请求用于添加数据

在 Swift 中实现字符串分割问题:以字典中的单词构造句子

文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结 前言 本题由于没有合适答案为以往遗留问题&#xff0c;最近有时间将以往遗留问题一一完善。 LeetCode - #140 单词拆分 II 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&…

【从零开始的LeetCode-算法】3297. 统计重新排列后包含另一个字符串的子字符串数目 I

给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新排列后&#xff0c;word2 是重排字符串的 前缀&#xff0c;那么我们称字符串 x 是 合法的 。 请你返回 word1 中 合法 子字符串的数目。 示例 1&#xff1a; 输入&#xff1a;word1 "bcca", word2 "…

.NET9 - 新功能体验(二)

书接上回&#xff0c;我们继续来聊聊.NET9和C#13带来的新变化。 01、新的泛型约束 allows ref struct 这是在 C# 13 中&#xff0c;引入的一项新的泛型约束功能&#xff0c;允许对泛型类型参数应用 ref struct 约束。 可能这样说不够直观&#xff0c;简单来说就是Span、ReadO…

Git错误:gnutls_handshake() failed: The TLS connection was non-properly terminated

最终我通过这个博客解决了问题&#xff1a;解决Git错误&#xff1a;gnutls_handshake() failed: The TLS connection was non-properly terminated 解决方案 1. 检查网络连接 首先&#xff0c;确保你的网络连接是稳定的。尝试访问其他HTTPS网站或服务&#xff0c;以排除网络问…

【C++知识总结】c++第一篇,简单了解一下命名空间是什么

一、C的由来 C语言是一种结构化和模块化的编程语言&#xff0c;它对于处理较小规模的程序非常适用。然而&#xff0c;当面临需要高度抽象和建模的复杂问题&#xff0c;以及规模较大的程序时&#xff0c;C语言就显得不那么合适了。为了应对这种挑战&#xff0c;并在解决软件危机…

Sickos1.1 详细靶机思路 实操笔记

Sickos1.1 详细靶机思路 实操笔记 免责声明 本博客提供的所有信息仅供学习和研究目的&#xff0c;旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动&#xff0c;您将独自承担…

【大数据学习 | Spark-Core】Spark提交及运行流程

spark的集群运行结构 我们要选择第一种使用方式 命令组成结构 spark-submit [选项] jar包 参数 standalone集群能够使用的选项。 --master MASTER_URL #集群地址 --class class_name #jar包中的类 --executor-memory MEM #executor的内存 --executor-cores NUM # executor的…

【CSP CCF记录】201903-2第16次认证 二十四点

题目 样例1输入 10 934x3 54x5x5 7-9-98 5x6/5x4 3579 1x19-9 1x9-5/9 8/56x9 6x7-3x6 6x44/5 样例1输出 Yes No No Yes Yes No No No Yes Yes 样例1解释 思路 参考&#xff1a;CCF小白刷题之路---201903-2 二十四点&#xff08;C/C 100分&#xff09;_ccf认证小白-CSDN博客 …

多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法

概述 多目标粒子群优化&#xff08;MOPSO&#xff09; 是粒子群优化&#xff08;PSO&#xff09;的一种扩展&#xff0c;用于解决具有多个目标函数的优化问题。MOPSO的目标是找到一组非支配解&#xff08;Pareto最优解&#xff09;&#xff0c;这些解在不同目标之间达到平衡。…

tomcat 后台部署 war 包 getshell

1. tomcat 后台部署 war 包 getshell 首先进入该漏洞的文件目录 使用docker启动靶场环境 查看端口的开放情况 访问靶场&#xff1a;192.168.187.135:8080 访问靶机地址 http://192.168.187.135:8080/manager/html Tomcat 默认页面登录管理就在 manager/html 下&#xff0c…

4.6 JMeter HTTP信息头管理器

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 HTTP信息头管理器的位置2 常见的HTTP请求头3 添加 HTTP 信息头管理器4 应用场景 前言 在 JMeter 中&#xff0c;HTTP信息头管理器&#xff08;HTTP Header Manager&#xff09…