【问题标题】:Can a date and time be specified when sending data to Azure event hub?向 Azure 事件中心发送数据时是否可以指定日期和时间?
【发布时间】:2015-06-04 14:27:09
【问题描述】:

这是场景。我不使用实时数据。相反,我从我的电力公司获取过去一天用电量的数据。具体来说,在过去一天的时钟上,我每天都可以获得 # 千瓦时的电量。

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

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

谢谢, 约翰

【问题讨论】:

  • 事件中心不加载数据。您将数据推送给它。虽然我看不出每天发送一次所有数据有什么好处。这是一种 ETL 方案,而不是事件处理方案。我认为您正在寻找数据工厂。至于日期 - 你是什么意思?

标签: azure azure-eventhub


【解决方案1】:

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

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

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

【讨论】:

  • Phuc,最多 7 天 # 正是我需要知道的以确认我的想法。出于好奇,您在哪里找到的?
  • 进入您的活动中心,点击配置。您将看到保留期。默认设置为 1 天,但您可以默认设置为 7 天。如果您想要更长的时间,我认为您必须向 Microsoft 发送支持票。
【解决方案2】:

这种类型的流系统不关心特定应用程序可能希望应用于项目的时间。除非您的代码执行此操作,否则根本不会根据时间字段进行任何处理。

发送的每条消息都是一个EventData,其中包含一条带有任意字节集的消息。您可以轻松地在该序列化数据结构中包含日期/时间,但 EventHubs 不会关心它。除了由序列号定义的分区内的插入顺序外,没有执行排序或固定排序。虽然enqueued time 可用,但它主要用于监控您的处理进度落后了多长时间。

至于您的其他问题,我同意 EventHubs 可能不是真正的最佳选择的评论。您当然可以每天将数据加载到其中一次,但如果它真的每天只有 24 个数据点,那么它并不是真正合适的技术选择,除非它是最终应该有整个智能电表负载的系统的原型/技术演示以公平的频率向它报告。 (另请注意,EventHubs 最低成本为 11 美元/月,服务总线队列最低成本为 10 美元/月,AWS SQS 最低成本为 0 美元)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2022-12-17
    • 2018-06-23
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多