我在 Azure IoT Edge 中有 2 个简单的管道。现在,我有兴趣访问在管道中的每个步骤/节点添加到 iot 消息中的时间戳。例如 IoTHub 和 ASA 的“enqueuingTime”和 IoTHub 和 ASA 的“processedTime”等。以下是管道:
IoT Edge 设备(输入数据源)-> IoTHub -> 自定义端点到 Azure 存储 + 路由 -> Azure Blob
到目前为止,我发现每个 iot 消息都附加到一个带有属性的 blob 文件,
EnqueuedTimeUtc
并且SystemProperties.enqueuedTime
在标头中。此外,两者都显示相同的值。这是IoTHub收到消息的时间还是IoTHub内部处理的时间?此外,如果我在 Azure 存储中使用自定义端点,消息会被批处理到单个 blob 文件中。是否可以在单个消息离开 IotHub 以及将其写入 blob 文件时访问时间戳?(即,我想获得诸如IoTHub-Processed-Timestamp或单个消息的Blob-Insertion-Timestamp之类的东西。)
IoT Edge 设备(输入数据源)-> IoTHub -> Azure 流分析 -> Azure SQL 数据库
在这种情况下,当我定义 ASA 查询时,输入是 IoTHub 端点
Messaging
。在Select
语句中,我可以访问整个消息头,因此,我还可以访问EventEnqueuedUtcTime
和EventProcessedUtcTime
,它们是流分析作业中消息入队和处理完成的时间戳。此外,我可以访问IoTHub.EnqueuedTime
,我假设它给出了消息在 IoTHub 中排队时的时间戳。当消息从 ASA 进入并插入 SQL DB 时,有没有办法获取时间戳?到目前为止,我正在使用GETDATE()
在插入记录期间自动附加时间戳。这是一个好主意吗?如果我对 Azure IoT 时间戳有正确的理解,谁能告诉我?是否有关于如何访问所有此类时间戳的文档?