向 Azure 事件中心发送数据时是否可以指定日期和时间?

Can a date and time be specified when sending data to Azure event hub?

场景如下。我没有使用实时数据。相反,我从我的电力公司获取过去一天的用电量数据。具体来说,我每天可以获得过去一天时钟上每小时的千瓦时数。

所以,我想在接下来的每一天将过去的信息加载到事件中心。这可行吗?事件中心是否支持加载过去的信息,还是永远只是实时流数据,无法加载过去的数据?

恐怕是这种情况,因为我在我能找到的有限 api 文档中没有看到任何日期说明。不过我想确认一下...

谢谢, 约翰

这种类型的流系统不关心特定应用程序可能希望应用到项目的时间。除非您的代码这样做,否则根本不会发生任何基于时间字段的处理。

发送的每条消息都是 EventData which contains a message with an arbitrary set of bytes. You can easily include a date/time in that serialized data structure, but EventHubs won't care about it. There is no sorting performed or fixed ordering other than insertion order within a partition which is defined by the sequence number. While the enqueued time 可用的,它主要用于监控您的处理进度。

关于您的其他问题,我同意 EventHubs 可能不是最佳选择的评论。您当然可以每天向其中加载一次数据,但如果它真的只有 24 个数据 points/day,那么它并不是真正合适的技术选择,除非它是一个 prototype/tech 最终应该有一个完整系统的演示以合理频率向其报告的智能电表负载。 (另请注意,EventHubs 最低每月 11 美元,Service Bus Queue 最低每月 10 美元,AWS SQS 最低 0 美元)

Azure 事件中心真正用于短期存储。默认情况下,您最多只能保留 7 天的数据。之后,将根据消息首次进入事件中心时创建的追加时间戳删除数据。因此,对超过 7 天的数据使用 Azure 事件中心是不切实际的。

Azure 事件中心用于 message/event 管理,而不是长期存储。一种可能的解决方案是将事件中心数据写入 Azure SQL 服务器或 blob 存储以进行长期存储。然后使用 Azure 流分析(事件处理器)将活动流与 SQL 服务器上积累的遗留数据结合起来。另请注意,您可以调用此附加属性。它被称为"EventEnqueuedUtcTime"。请记住,这将是服务器时间,其时钟可能与实际测量的date/time不同。

至于附加日期时间。如果您将其作为 JSON 发送,只需将其附加为键和消息值即可。带时间的示例消息:{ "Time": "My UTC Time here" }