# MQTT 源

<span style="background:green;color:white;">流</span>        <span style="background:green;color:white">扫描表</span>

NeuronEX 数据处理模块通过 `MQTT` 类型的数据源，可以接收来自 MQTT Broker 的数据并通过规则处理分析。

## 创建流

登录 NeuronEX，点击**数据处理** -> **源管理**。在**流管理**页签，点击**创建流**。

在弹出的**源管理** / **创建**页面，进入如下配置：

- **流名称**：输入流名称
- **是否为带结构的流**：勾选确认是否为带结构的流，如为带结构的流，则需进一步添加流字段。可默认不勾选。
- **流类型**：选择 mqtt
- **数据源**（MQTT 主题）：将要订阅的 MQTT 主题， 例如 topic1。
- **配置组**：可编辑使用默认配置组，或点击添加配置组，在弹出的对话框中进行如下设置，设置完成后，可点击**测试连接**进行测试：

  - **名称**：输入配置组名称。
  - **服务器地址**：MQTT 消息代理的服务器，比如 `tcp://127.0.0.1:1883` 。
  - **用户名**：可选参数，MQTT 连接用户名。
  - **密码**：可选参数，MQTT 连接密码。
  - **MQTT 协议版本**：MQTT 协议版本，支持 3.1 或者 3.1.1 ，默认为 3.1.1。 
  - **客户端 ID**：MQTT 连接的客户端 ID。 如果未指定，将使用一个 uuid。
  - **QoS 级别**：默认 QoS 级别为0，可选值：0、1、2。
  - **证书类型**：可选参数，填写证书路径，可以为绝对路径，也可以为相对路径。如果指定的是相对路径，那么父目录为执行 neuronex 命令的路径。示例值：`/var/xyz-certificate.pem`
  - **私钥路径**：可选参数，可以为绝对路径，也可以为相对路径。示例值：`/var/xyz-private.pem.key`
  - **根证书路径**：可选参数，用以验证服务器证书。可以为绝对路径，也可以为相对路径。示例值：`/var/xyz-rootca.pem`
  - **跳过证书验证**：默认为 False。如设置为 True，将跳过证书认证，否则进行证书验证。
  - **解压缩**：默认留空为不解压缩。使用指定的压缩方法解压缩 MQTT Payload，可选值：zlib、gzip、flate。
- **流格式**：支持 json、binary、protobuf、delimited、custom。默认 json 格式。
  - 如选择 protobuf 或 custom，还应配置对应的[模式和模式消息](./config.md#模式)
  - 如选择 delimited，还应配置分隔符，如 "`,`"

- **共享**：勾选确认是否共享源。

## 创建扫描表

MQTT 源支持查询表。登录 NeuronEX，点击**数据处理** -> **源管理**。在**扫描表**页签，点击**创建扫描表**。

- **表名称**：输入表名称
- **是否为带结构的表**：勾选确认是否为带结构的流，如为带结构的流，则需进一步添加流字段。可默认不勾选。
- **表类型**：选择 mqtt。
- **数据源**（MQTT 主题）：将要订阅的 MQTT 主题， 例如 topic1
- **配置组**：可使用默认配置组，如希望自定义配置组，可参考[创建流](#创建流)部分
- **表格式**：支持 json、binary、delimited、custom。
  - 如选择 custom，还应配置对应的[模式和模式消息](./config.md#模式)
  - 如选择 delimited，还应配置分隔符，如 ","

- **保留大小**：指定保留大小。
