ThingsBoard3.9.1规则节点kafka发送消息

        最近在整理thingsboard课程,基于最新thingsboard版本3.9.1/4.0,欢迎大家收藏关注我提问在评论区留言,我争取把最新、最准、最好的课程,呈现在各位亦师亦友的csdn广大读者面前。

本章节讲述:外部规则节点kafka。

本节点:推送消息到kafka。

传入消息类型可以是任何类型。

在规则链中增加一个kafka节点,相当于在平台上启动一个kafka client(做为生产者producer),此处client会主动连接kafka cluster。

本章节运行/测试环境:thingsboard3.9.1 CE / Kafka-2.13-3.9.0 / zookeeper-3.9.3-bin

Kafka架构图如下:

在规则链中增加一个kafka节点,如下:

说明:

        主题模式Topic pattern*:可以是静态字符串,也可以是使用消息元数据属性解析的模式。例如 ${deviceType}

        引导服务Bootstrap servers*:kafka代理服务器。如果多个就逗号隔开。

        失败重试Automatically retry times if fails: 10

        本地缓存时间Time to buffer locally (ms):500

        Number of acknowledgments*

        Key serializer*

        Value serializer*

        其他属性Other properties(可选):连接kafka所需要的其他参数,以kv方式填写。

       

        模板变量支持如下:

Kafka发送的 Key 和 Value 字段,支持动态模板填充,比如:

${msg} → 消息的body内容

${metadata} → 消息的元数据(通常是JSON字符串)

${msgType} → 消息类型,如 POST_TELEMETRY_REQUEST、

ATTRIBUTES_UPDATED 等

${entityId} → 实体ID(设备、资产等)

${entityName} → 实体名称

对于上述变量,可以自由组合,比如:

设备${entityName}上报数据: ${msg}。

应用场景测试:

offset explorer客户端软件打开,添加kafka和zookeeper,连接,如下,

准备Jmeter,测试 Test Deivce T1,如下:

规则链配置,如下:

当Jmeter发送消息成功之后,在系统中可以看到最新遥测数据,如下:

在规则链中跟踪kafka节点的事件消息,如下:

1:

{

    "Seqno": 6,

    "BusVoltage": 378,

    "humidity": 27,

    "temperature": 64

}

2:

{

    "deviceName": "Test Device A1",

    "deviceType": "default",

    "ts": "1745929293214"

}

3:

{

    "Seqno": 6,

    "BusVoltage": 378,

    "humidity": 27,

    "temperature": 64

}

4:(在OUT消息的元数据中增加了以下蓝色字体三个字段

{

    "deviceName": "Test Device A1",

    "deviceType": "default",

    "offset": "0",

    "partition": "0",

    "topic": "my-topic",

    "ts": "1745929293214"

}

在Offset Explorer界面上可以看到,kafka收到了消息,如下:

说明:

使用kafka-console-consumer.bat查看或订阅kafka某个topic。

# 如果没有任何返回或没有响应,则该topic中没有数据内容;

# 如果有回应数据,则回应内容就是该topic中的数据内容;

比如:

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic my-topic --from-beginning

执行命令如下:

<think>首先,用户的问题是关于如何在ThingsBoard中重置整个数据库。根据之前的对话历史,用户在安装ThingsBoard时遇到管理用户报错,现在想重置整个数据库。我需要基于提供的引用和相关知识来回答。回顾引用:-[^1]:提到了ThingsBoard数据库的表结构信息,包括40张数据表。-[^2]:是Bilibili视频链接,关于ThingsBoard课程,可能不直接相关。-[^3]:介绍了PostgreSQL的psql工具。-[^4]:提到了ThingsBoard3.9.1的数据库表结构,有58个表。-[^5]:讨论了规则链表的结构。用户在上一次查询中明确了“我想重置ThingsBoard的全部数据库的方法”,所以我需要提供重置整个数据库的步骤。关键点:-ThingsBoard默认使用PostgreSQL数据库。-重置数据库意味着清除所有数据,包括用户、设备等。-方法通常是删除数据库并重新创建它。步骤:1.**停止ThingsBoard服务**:防止数据冲突或损坏。2.**备份数据库(可选)**:如果生产环境,建议备份。3.**删除数据库**:使用PostgreSQL命令。4.**重新创建数据库**:使用PostgreSQL或安装脚本。5.**重新启动服务**:让ThingsBoard重建数据库结构。在之前的回答中,我提到了删除用户或重置数据库的方法。现在扩展一下。具体步骤:1.**停止服务**:-Linux:`sudoservicethingsboardstop`-Windows:通过服务管理器停止。2.**连接到PostgreSQL**:-使用psql:`psql-Upostgres`(或其他用户名)-命令参考[^3]。3.**列出数据库**(可选):-`\l`查看所有数据库。4.**删除数据库**:-`DROPDATABASEthingsboard_db;`-数据库名可能是`thingsboard_db`,根据安装确认。5.**创建新数据库**:-`CREATEDATABASEthingsboard_db;`-授予权限:`GRANTALLPRIVILEGESONDATABASEthingsboard_dbTOthingsboard_user;`(如果有用户名)6.**重新初始化数据库**:-启动ThingsBoard服务:`sudoservicethingsboardstart`-ThingsBoard在启动时会自动创建表结构(首次安装时)。-或者,运行安装脚本:`sudo/usr/share/thingsboard/bin/install/install.sh--loadDemo`(如果只想加载演示数据)注意事项:-重置会丢失所有数据。-确保ThingsBoard配置正确,知道数据库名和凭据。-数据库名通常为`thingsboard_db`,用户名如`thingsboard`。用户可能想通过卸载或重新安装来重置。但数据库重置是独立的。在回答中:-结构清晰:分步骤说明。-包括相关引用:如使用[^3]的psql命令。-生成相关问题。相关问题:1.如何在重置数据库后恢复数据?2.ThingsBoard数据库备份方法?3.如何修改默认数据库配置?最后,确保回答真实可靠。基于ThingsBoard官方文档或常见实践。</think> ### 如何在ThingsBoard中重置整个数据库 要重置ThingsBoard的整个数据库,您需要手动删除默认的PostgreSQL数据库(通常是`thingsboard_db`),然后让ThingsBoard在服务启动时自动重建数据库结构。以下是详细步骤,**重要:此操作会永久删除所有数据,仅在开发环境或全新安装前执行。生产环境请先备份数据**[^1][^3]。 #### 1. **停止ThingsBoard服务** 防止服务运行时数据库冲突: ```bash sudo service thingsboard stop # Linux系统命令 ``` - Windows用户:通过“服务管理器”停止名为“thingsboard”的服务。 #### 2. **备份数据库(可选但强烈推荐)** 如果您需要保留数据,先备份: ```bash pg_dump -U postgres thingsboard_db > thingsboard_backup.sql # 备份到SQL文件 ``` - `-U postgres`:使用PostgreSQL管理员用户(默认用户名),如果配置自定义用户,需替换[^3]。 - 恢复数据:`psql -U postgres -d thingsboard_db -f thingsboard_backup.sql` #### 3. **连接到PostgreSQL并删除数据库** 使用`psql`工具(PostgreSQL命令行)[^3]: ```bash psql -U postgres # 以管理员身份连接(密码可能需要输入) ``` 在`psql`会话中执行: ```sql -- 查看现有数据库列表 \l -- 删除默认数据库(通常是thingsboard_db) DROP DATABASE IF EXISTS thingsboard_db; -- 退出psql \q ``` - **注意**: - 数据库名参考ThingsBoard配置文件(默认`/etc/thingsboard/conf/thingsboard.yml`中的`spring.datasource.url`)。 - 如果表存在依赖关系,使用`DROP DATABASE ... WITH (FORCE);`强制删除[^1]。 #### 4. **重新创建数据库和用户(可选)** 如果数据库完全重置后需重建: ```bash psql -U postgres -c "CREATE DATABASE thingsboard_db;" # 创建新库 psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE thingsboard_db TO thingsboard;" # 授权给ThingsBoard用户 ``` - ThingsBoard安装后会自动创建默认用户`thingsboard`(凭据在配置文件中)[^4]。 #### 5. **启动ThingsBoard服务并验证** 服务启动时会自动初始化表结构: ```bash sudo service thingsboard start # Linux命令 ``` - 查看日志确认成功:`tail -f /var/log/thingsboard/thingsboard.log`(查找“Database initialized”信息)。 - 访问ThingsBoard Web界面(`http://localhost:8080`),使用默认用户登录(如`sysadmin@thingsboard.org`/`sysadmin`)测试是否为新数据库[^2]。 #### 注意事项 - **数据丢失风险**:重置后所有设备、规则、用户数据(包括表如`tb_user`)将被清除[^1][^5]。 - **自动重建机制**:ThingsBoard在首次连接到空数据库时,会运行SQL脚本创建全部表结构(如3.9.1版本有58个表)[^4]。 - **配置检查**:确保`thingsboard.yml`中的数据库连接设置正确。 - **替代方法**:如果要保留部分数据,可以只删除用户表(如`DELETE FROM tb_user;`),但不保证一致性。 如果问题持续,检查PostgreSQL版本兼容性或重装ThingsBoard
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值