homework-jianmu/docs/zh/06-advanced/05-data-in/07-mqtt.md

162 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "MQTT"
sidebar_label: "MQTT"
---
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 MQTT 迁移数据到当前 TDengine 集群。
## 功能概述
MQTT 表示 Message Queuing Telemetry Transport (消息队列遥测传输)。它是一种轻量级的消息协议,易于实现和使用。
TDengine 可以通过 MQTT 连接器从 MQTT 代理订阅数据并将其写入 TDengine以实现实时数据流入库。
## 创建任务
### 1. 新增数据源
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
![mqtt-01.png](./mqtt-01.png)
### 2. 配置基本信息
**名称** 中输入任务名称“test_mqtt”
**类型** 下拉列表中选择 **MQTT**
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮
**目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮
![mqtt-02.png](./mqtt-02.png)
### 3. 配置连接和认证信息
**MQTT 地址** 中填写 MQTT 代理的地址,例如:`192.168.1.42`
**MQTT 端口** 中填写 MQTT 代理的端口,例如:`1883`
**用户** 中填写 MQTT 代理的用户名。
**密码** 中填写 MQTT 代理的密码。
![mqtt-03.png](./mqtt-03.png)
### 4. 配置 SSL 证书
如果 MQTT 代理使用了 SSL 证书,需要在 **SSL证书** 中上传证书文件。
![mqtt-04.png](./mqtt-04.png)
### 5. 配置采集信息
**采集配置** 区域填写采集任务相关的配置参数。
**MQTT 协议** 下拉列表中选择 MQTT 协议版本。有三个选项:`3.1`、`3.1.1`、`5.0`。 默认值为 3.1。
**Client ID** 中填写客户端标识,填写后会生成带有 `taosx` 前缀的客户端 id (例如,如果填写的标识为 `foo`,则生成的客户端 id 为 `taosxfoo`)。如果打开末尾处的开关,则会把当前任务的任务 id 拼接到 `taosx` 之后,输入的标识之前(生成的客户端 id 形如 `taosx100foo`)。连接到同一个 MQTT 地址的所有客户端 id 必须保证唯一。
**Keep Alive** 中输入保持活动间隔。如果代理在保持活动间隔内没有收到来自客户端的任何消息,它将假定客户端已断开连接,并关闭连接。
保持活动间隔是指客户端和代理之间协商的时间间隔,用于检测客户端是否活动。如果客户端在保持活动间隔内没有向代理发送消息,则代理将断开连接。
**Clean Session** 中,选择是否清除会话。默认值为 true。
**订阅主题及 QoS 配置** 中填写要消费的 Topic 名称。使用如下格式设置: `topic1::0,topic2::1`
点击 **检查连通性** 按钮,检查数据源是否可用。
![mqtt-05.png](./mqtt-05.png)
### 6. 配置 MQTT Payload 解析
**MQTT Payload 解析** 区域填写 Payload 解析相关的配置参数。
taosX 可以使用 JSON 提取器解析数据,并允许用户在数据库中指定数据模型,包括,指定表名称和超级表名,设置普通列和标签列等。
#### 6.1 解析
有三种获取示例数据的方法:
点击 **从服务器检索** 按钮,从 MQTT 获取示例数据。
点击 **文件上传** 按钮,上传 CSV 文件,获取示例数据。
**消息体** 中填写 MQTT 消息体中的示例数据。
json 数据支持 JSONObject 或者 JSONArray使用 json 解析器可以解析一下数据:
``` json
{"id": 1, "message": "hello-word"}
{"id": 2, "message": "hello-word"}
```
或者
``` json
[{"id": 1, "message": "hello-word"},{"id": 2, "message": "hello-word"}]
```
解析结果如下所示:
![mqtt-06.png](./mqtt-06.png)
点击 **放大镜图标** 可查看预览解析结果。
![mqtt-07.png](./mqtt-07.png)
#### 6.2 字段拆分
**从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 message 字段拆分成 `message_0``message_1` 这2 个字段,选择 split 提取器seperator 填写 -, number 填写 2。
![mqtt-08.png](./mqtt-08.png)
点击 **删除**,可以删除当前提取规则。
点击 **新增**,可以添加更多提取规则。
点击 **放大镜图标** 可查看预览提取/拆分结果。
![mqtt-09.png](./mqtt-09.png)
#### 6.3 数据过滤
**过滤** 中,填写过滤条件,例如:填写`id != 1`,则只有 id 不为 1 的数据才会被写入 TDengine。
![mqtt-10.png](./mqtt-10.png)
点击 **删除**,可以删除当前过滤规则。
点击 **放大镜图标** 可查看预览过滤结果。
![mqtt-11.png](./mqtt-11.png)
#### 6.4 表映射
**目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮
**映射** 中,填写目标超级表中的子表名称,例如:`t_{id}`。根据需求填写映射规则,其中 mapping 支持设置缺省值。
![mqtt-12.png](./mqtt-12.png)
点击 **预览**,可以查看映射的结果。
![mqtt-13.png](./mqtt-13.png)
### 7. 高级选项
**日志级别** 下拉列表中选择日志级别。有五个选项:`TRACE`、`DEBUG`、`INFO`、`WARN`、`ERROR`。 默认值为 INFO。
**保存原始数据时**以下2个参数配置生效。
**最大保留天数** 中设置原始数据的最大保留天数。
**原始数据存储目录** 中设置原始数据保存路径。
![mqtt-14](./mqtt-14.png)
### 8. 创建完成
点击 **提交** 按钮,完成创建 MQTT 到 TDengine 的数据同步任务,回到**数据源列表**页面可查看任务执行情况。