记录来自 Azure 事件中心的所有消息的最简单方法

Simplest way to log all messages from an Azure Event Hub

我正在使用输出到事件中心的服务。

我们想要存储该输出,每天由 Apache Spark 上的批处理作业 运行 读取一次。基本上我们认为,只需将所有消息转储到 blob。

从事件中心捕获消息到 Blob 存储的最简单方法是什么?

我们首先想到的是流式分析作业,但它需要解析原始消息 (CSV/JSON/Avro),我们当前的格式是其中的 none。


更新 我们通过更改消息格式解决了这个问题。我仍然想知道是否有任何低影响的方法来将消息存储到 blob。在 Streaming Analytics 出现之前,EventHub 是否有解决方案?

您可以编写自己的工作进程来从 EventHub 读取消息并将它们存储到 blob 存储。您不需要实时执行此操作,因为 EH 上的消息会保留设置的保留天数。读取 EH 的客户端负责通过跟踪 EH 消息 partitionid 和偏移量来管理已处理的消息。有一个 C# 库可以让这一切变得非常简单并且可以很好地扩展:https://azure.microsoft.com/en-us/documentation/articles/event-hubs-csharp-ephcs-getstarted/

Azure 现在内置了这个:Event Hubs Archive (预览中)

您可以使用 event-hubs-capture 捕获到 blob。

您也可以通过从事件中心触发器触发的 Azure 函数(无服务器代码)来执行此操作。

根据您的要求,如果您需要它没有的功能,例如另存为 GZIP 或写入更自定义的 blob 虚拟目录结构,这可能比事件捕获功能更好。

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs#trigger-usage