You need to enable JavaScript to run this app.
导航
mqtt sink 配置实践
最近更新时间:2024.11.08 14:46:58首次发布时间:2024.11.08 14:46:58

本文介绍了如何借助北向通道将边缘节点采集的设备属性数据上报到第三方 MQTT 服务器。

准备工作

  1. 准备一个边缘节点,并完成模拟数据源

    注意

    边缘智能软件版本必须在 v2.7.0 及以上。

  2. 准备一个 MQTT broker。
    在本文中,我们使用免费的公共 MQTT broker 进行测试。

    注意

    请勿在生产环境中使用公共 MQTT broker,否则可能带来安全风险和导致业务停机。

  3. 准备一个 MQTT client 工具。
    在本文中,我们使用 MQTTX

  4. 参照创建北向通道,创建一个北向通道。
    按以下方式配置数据源(source)和数据目的地(sink):

    类型

    配置项

    说明

    数据源配置

    节点

    选择您的边缘节点。

    设备模板

    选择 全部

    驱动模板

    选择 全部

    设备实例

    选择您在模拟数据源操作中,接入到边缘节点的虚拟设备。

    sink 节点配置

    sink 类型

    选择 mqtt

    参数配置

    • server:设置为 tcp://broker.emqx.io:1883,即公共 MQTT broker 的地址。
    • topic:设置为 vei/device/data/report

    Image

完成以上配置后,单击 连通性测试。确保连通性测试成功,然后单击 保存

验证数据上报结果

准备工作完成后,北向通道将被部署到边缘节点。当北向通道正常运行时,虚拟设备的随机属性数据将被上报到 MQTT broker。您可以按以下方式进行验证:

  1. 打开 MQTTX 客户端。
  2. 连接到 MQTT broker(tcp://broker.emqx.io:1883)并订阅设备属性数据(vei/device/data/report)。

在客户端可以看到边缘节点上报到 MQTT broker 的设备属性数据。
Image

配置示例

示例1:修改 MQTT 客户端参数

在生产环境中,如果您的 MQTT broker 对消息发送客户端有要求,您可按需修改以下客户端参数:clientIdprotocolVersionqosretainedcompressionusername & password
要修改消息发送客户端的参数,按以下方式配置:

  1. 编辑北向通道。
  2. 根据mqtt sink 参数说明修改 参数配置
  3. 完成 连通性测试,然后单击 保存

北向通道保存后会自动重新部署。当修改后的北向通道正常运行时,您可以到 MQTTX 客户端验证结果。如果在 MQTTX 客户端可以正常收到设备属性数据,则表示参数修改成功。(边缘节点依据修改后的参数,成功连接到 MQTT broker 并发送设备属性数据到 MQTT broker。)

示例2:修改数据转发格式

默认情况下,边缘节点采集到的设备属性数据会以原始格式转发到目标 MQTT broker。如果目标 MQTT broker 需要特定的数据格式,您可以相应地修改数据转发格式。

  • 边缘智能提供了 4 种预置的数据格式模板,包括 json-simplest、json-influx、csv、yaml。通过为 mqtt sink 配置相应的数据格式模板,采集到的原始数据会被转换成指定格式,然后转发至 MQTT broker。
  • 如果预置的数据格式模板无法满足需求,您还可以自定义数据格式模板。

要修改数据转发格式,按以下方式配置:

  • 方式1:使用预置数据格式模板
    1. 编辑北向通道。
    2. 设置 数据格式,选择一种预置的数据格式模板。
      要查看数据预览效果,您可以选择一个设备模板。对应数据格式在所选设备模板上的预览将被展示。
    3. 完成 连通性测试,然后单击 保存
  • 方式2:自定义数据格式模板
    1. 编辑北向通道。
    2. 参数配置 中增加 dataTemplate 参数,并定义该参数的值为数据格式转换逻辑。

      说明

      如需编写数据格式转换逻辑,可以参考设备数据采集 - 原始数据格式以及使用 Golang template。您也可以提交工单联系我们,以获取帮助。

      Image
    3. 完成 连通性测试,然后单击 保存

修改数据转发格式后,您可前往 MQTTX 客户端进行验证。在最新接收到的数据中,如果数据格式符合预期,表示数据转发格式已经修改成功。
Image

mqtt sink 参数说明

下表介绍了 mqtt sink 支持的所有参数。

参数

数据类型

是否必选

说明

示例值

server

String

MQTT broker 地址。

tcp://127.0.0.1:1883

topic

String

上报到 MQTT broker 的消息主题。

analysis/result

clientId

String

指定连接 MQTT broker 的客户端 ID。
如果未指定,则默认使用一个 36 位随机生成的 Universal Unique Identifier (UUID)。

north

protocolVersion

String

指定使用的 MQTT 协议版本。该参数有以下取值:

  • 3.1.1(默认):也被称为 MQTT 4。
  • 3.1:也被称为 MQTT 3。

3.1.1

qos

Integer

消息转发的服务质量。该参数以下取值:

  • 0(默认):适用于对可靠性要求不高,能够容忍少量消息丢失的场景,如传感器数据采集。
  • 1:适用于对可靠性有一定要求,且能够容忍重复消息的场景,如普通数据同步。
  • 2:适用于对可靠性要求非常高,不能容忍任何消息丢失或重复的场景,如金融交易等。

数值越高,消息传递可靠性就越强,但通信开销和延迟也会增加。

0

retained

Boolean

指定 MQTT broker 是否应保留当前主题的最近一条消息,以便对此主题感兴趣的订阅者可以离线,并随时重新连接以接收最新消息,而不必在订阅后等待发布者的下一条消息。默认值为 false

false

compression

String

使用指定的压缩方法压缩 Payload。该参数有以下取值:libgzipflatezstd。默认留空,表示不压缩。

gzip

username

String

连接 MQTT broker 的用户名称。

visitor

password

String

连接 MQTT broker 的用户密码。

123456

insecureSkipVerify

Boolean

是否跳过证书验证。默认值为 false

false

enableCache

Boolean

是否启用本地缓存。默认值为 fasle
启用本地缓存后,不能及时发送的数据将缓存到本地,稍后继续发送;关闭本地缓存后,不能及时发送的数据将被丢弃。

false

cleanCacheAtStop

Boolean

北向通道停止处理时是否清除缓存。默认值为 true

true

memoryCacheThreshold

Integer

本地内存中允许缓存的最大消息数量。默认值为 1024

1024

maxDiskCache

Integer

本地磁盘中允许缓存的最大消息数量。默认值为 1024000

1024000

bufferPageSize

Integer

缓冲区每页中包含的消息数量,防止频繁 IO。默认值为 256

256

ResendInterval

Integer

重新发送缓存消息的时间间隔(毫秒)。默认值为 1000

1000