我在 Azure Iot Edge 中有 2 个简单的管道。现在,我有兴趣访问添加到管道中每个步骤/节点的物联网消息中的时间戳。例如,IoTHub 和 ASA 上的“enqueuingTime”以及 IoTHub 和 ASA 上的“processedTime”等。以下是管道:
IoT Edge 设备(输入数据源)-> IoTHub -> 到 Azure 存储 + 路由的自定义端点 -> Azure Blob
到目前为止,我发现每条 iot 消息都附加到一个 blob 文件中,其 header 中具有属性
EnqueuedTimeUtc
和SystemProperties.enqueuedTime
。此外,两者显示相同的值。这是IoTHub收到消息的时间还是IoTHub内部处理消息的时间?此外,如果我在 Azure 存储中使用自定义终结点,消息将被批处理到单个 blob 文件中。当单个消息离开 IotHub 以及将其写入 blob 文件时,是否可以访问时间戳? (即,我想要获取诸如单个消息的 IoTHub-Processed-Timestamp 或 Blob-Insertion-Timestamp 之类的内容。)
IoT Edge 设备(输入数据源)-> IoTHub -> Azure 流分析 -> Azure SQL 数据库
在本例中,当我定义 ASA 查询时,输入是 IoTHub 端点
消息传送
。在Select
语句中,我可以访问整个消息头,因此,我还可以访问EventEnqueuedUtcTime
和EventProcessedUtcTime
,它们是消息的时间戳流分析作业内的排队和处理完成。此外,我可以访问 IoTHub.EnqueuedTime,我认为它给出了消息在 IoTHub 中排队时的时间戳。 当消息从 ASA 输入并插入 SQL DB 时,有没有办法获取时间戳? 到目前为止,我使用GETDATE()
自动附加时间戳插入记录期间。这是个好主意吗?如果我对 Azure Iot 时间戳有正确的理解,有人可以告诉我吗?有没有关于如何访问所有此类时间戳的文档?
最佳答案
EventEnqueuedUtcTime
是流分析中来自 IoT 中心的事件的默认时间戳,是事件到达 IoT 中心的时间戳。 EventProcessedUtcTime
是流分析处理事件的日期和时间。更多信息document 。
正如您所提到的,当您使用来自 IoT 中心的流数据时,您可以在流分析查询中访问 EventProcessedUtcTime 和 EventEnqueuedUtcTime。
当单个数据流包含多个在不同字段中具有时间戳的事件类型时,您现在可以使用 TIMESTAMP BY使用表达式为每种情况指定不同的时间戳字段。ASA 是一个时间系统,因此流经它的每个事件都有一个时间戳。时间戳是根据事件到达输入源的时间自动分配的,但您也可以使用 TIMESTAMP BY 显式访问事件负载中的时间戳。
更新:
此外,EventEnqueuedUtcTime
是 IoT 中心收到事件的日期和时间。但 IoTHub.EnqueuedTime
是 IoT 中心收到消息的时间。当Device/DeviceClient 向 IoTHub 发送遥测消息。Azure IoT 中心提供从连接的设备传输数据并将该数据集成到业务应用程序中的功能。 IoT 中心提供消息路由和事件路由,用于将 IoT 事件集成到其他 Azure 服务或业务应用程序中。更多信息 here .
关于azure - 如何访问Azure Iot Edge Pipeline中的各种时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50828306/