如何在 AWS IoT Bridge 或 EMQX 中向 MQTT 消息添加时间戳?

问题描述 投票:0回答:1

我有一个运行两个 MQTT 组件的 AWS Greengrass 设备:

  • aws.greengrass.clientdevices.mqtt.EMQX
  • aws.greengrass.clientdevices.mqtt.Bridge

我有一个硬件设备,每 5 分钟向 EMQX 代理上的某个主题发布 MQTT 更新。 “mqtt.Bridge”也订阅了该主题,因此接收这些消息并将它们发送到 IoT Core。

硬件设备在发送到 MQTT 代理的消息中不包含时间戳。这意味着,如果我的 Greengrass 设备处于离线状态,当它重新连接并将排队的 MQTT 消息发送到 IoT 核心时,我不知道这些消息最初是什么时候发送的。

mqtt.EMQX 或 mqtt.Bridge 是否有任何机制可以为消息添加时间戳?或者是我部署自定义组件的唯一选择,该组件订阅 MQTT 主题、接收消息、添加时间戳并在不同主题上发布新消息,然后我可以将其路由到 IoT 核心?

amazon-web-services mqtt aws-iot emq
1个回答
0
投票

除了有效负载之外,MQTTv3 消息中没有其他位置可以存储时间戳。

如果代理支持 MQTTv5,则可以将时间戳添加为消息属性,而无需更改有效负载(如果发送到 v3 代理,MQTTv5 属性将被删除)

AWS IoT 代理似乎支持属性

https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt5-properties

我对 EMQX 不太熟悉,但我看到它支持插件,可以在将消息转发到 AWS 之前添加 at timestamp 属性。

© www.soinside.com 2019 - 2024. All rights reserved.