Azure 事件中心消息存储在哪里?

Posted

技术标签:

【中文标题】Azure 事件中心消息存储在哪里?【英文标题】:Where is Azure Event Hub messages stored? 【发布时间】:2016-02-22 05:53:08 【问题描述】:

我使用此RedDog 工具生成了一个 SAS 签名,并使用Events Hub API refs 成功向事件中心发送了一条消息。我知道它是成功的,因为我从端点收到了 201 Created 响应。

这个小小的成功带来了一个我无法找到答案的问题:

我去了 azure 门户,在任何地方都看不到我创建的消息。进一步阅读发现我需要创建一个存储帐户;我偶然发现了一些需要存储帐户凭据等的 C# 示例(EventProcessorHost)。

问题是,我可以使用任何 API 来保存数据吗?我不想使用 C# 工具。

如果我的方法有误,请纠正我,但我的目标是能够将遥测数据发布到 EventHub,保存数据并对其执行一些分析操作。遥测数据应该可以在 Azure 上查看。

【问题讨论】:

【参考方案1】:

您无法直接访问用于 EventHub 消息的临时存储,但您可以编写一个持续从 EventHub 读取数据并将消息保存到 Azure Table 或 Azure Blob 的使用者。

您会发现最接近自动持久化消息的方法(如 Amazon Kinesis Firehose 与 EventHubs 基本上等效的 Amazon Kinesis),将使用 Azure Streaming Analytics 配置为将输出写入 Azure Blob 或到 Azure 表。 This example 展示了如何设置流式分析作业来传递数据并将其存储在 SQL 中,但您可以看到可以选择 Azure Table 等选项的 UI。或者您可以从the output API 了解选项。

当然,您应该了解导致this question 的序列化要求

【讨论】:

很好,谢谢。那真的很有帮助!我按照示例中的说明进行操作,使其适合我的用例。最后一个问题,除了我刚刚做的事情之外,EventProcessorHost 会做什么 - 发送事件,持久化它们,从数据库中读取持久化的值到我的应用程序中? src 代码不可用,所以我不能做太多挖掘。 EventProcessorHost 是一种工具,可以减轻处理跨不同盒子消耗多个分区的痛苦。 “消费”的含义因用例而异。我们有一个将事件保存到 AzureTable 的消费者,以及一个计算各种指标并采取各种其他操作的消费者(相同数据的)。基本上它允许其他 C# 代码访问消息并做任何事情。 借助标准层事件中心,您现在可以让 Azure 自动将您的 EventHub 消息转发到 Azure 存储或 Azure Data Lake。他们称之为捕获。 [信息在这里。][1] 与流式分析作业不同,处理捕获的消息没有相关成本。当然,您必须支付存储费用。一旦你捕获了这些消息,没有任何机制可以随着时间的推移清理它们。 [1]:docs.microsoft.com/en-us/azure/event-hubs/…【参考方案2】:

事件中心最多可存储 7 天的数据;这也是标准定价层。如果要将数据保留在存储帐户中更长时间,可以使用事件中心捕获功能。您无需编写任何代码即可实现此目的。您可以通过 Portal 或 ARM 模板对其进行配置。这在本文档中有所描述 - https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-capture-overview

事件中心将其临时数据存储在 Azure 存储中。它没有提供有关数据存储的更多详细信息。从本文档中可以看出这一点 - https://docs.microsoft.com/en-us/azure/event-hubs/configure-customer-managed-key

您需要的 EventProcessorHost 存储帐户仅用于检查点或维护分区中上次读取事件的偏移量。

【讨论】:

以上是关于Azure 事件中心消息存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

未找到任何事件 - Azure 事件中心

在事件中心接收消息时未触发 ASE 中的 Azure 函数

Azure 事件中心 Event Grid(事件网格)+Azure Functions处理IOT Hub中的消息

使用 Python Qpid/Proton/Messenger(),如何过滤来自 Azure 事件中心的消息?

Azure 事件中心 - 如何使用官方 SDK 并行使用事件?

Azure 事件中心的 HTTPS 端点