哪个 Azure 服务用于处理来自事件中心的数据?

Which Azure service to use for processing data from Event Hub?

如果有人帮助我挑选最适合我的场景的 Azure 服务,我将不胜感激 - 我刚刚开始使用 Azure 服务,我的知识非常有限。

我有来自多个来源的不同形状的数据进入事件中心。我需要从事件中心订阅事件,并根据它们的格式处理它们并最终将它们保存到 SQL 数据库中。所有组件——事件消费者、SQL 数据库——都需要托管在云中。

我如何在 "Azure Orientated Architecture" 中实现它?

在云外应用程序中,我会让竞争的消费者订阅事件中心。它们将是一些控制台应用程序或 Windows 服务,并且每个都将异步处理事件(由于事件处理是幂等的,这进一步简化了)。

理想情况下,上述消费者的 Azure 等价物会自动扩大和缩小,所以我不想使用托管控制台应用程序的 VM(我需要自己关注 VM 的资源) .在扩展和部署方面,它们必须表现得像应用服务,但我的印象是这些仅适用于 Web 应用程序。我还简要地查看了 Web 作业,但它们似乎以不同的时间间隔轮询数据,而我需要一个适当的事件订阅者,事件中心将数据推送到其中。

任何帮助将不胜感激! 谢谢。

稍后编辑:

  1. 我研究过 Web Jobs,它们确实允许连续的 处理,因此看起来它们可以自动使用 扩展订阅者。
  2. 理想情况下,我想编写代码 F# 中的订阅者。如果不是,C# 是另一种选择 可用。

关于 IoT 中心,您可以查看我的 post。 Event Hub 基本相同。 (post 中的每个示例都可以在事件中心上使用)。

此外,对于事件中心,您还可以使用具有事件中心触发器的 Azure Functions - 只要事件中心收到新事件,该函数就会 运行。它也将满足您的缩放要求。

如果您与多个消费者一起工作,请确保使用事件中心消费者组,以便每个消费者都可以独立读取流。

我会说将 WebJob 与 EventProcessor 结合使用。我写了一些可以轻松转移到 WebJob 的演示代码:https://github.com/DeHeerSoftware/SemanticLogging.EventHub/tree/master/SemanticLogging.EventHub.Processor

请参阅 https://azure.microsoft.com/en-us/documentation/articles/event-hubs-csharp-ephcs-getstarted/#receive-messages-with-eventprocessorhost 获取官方文档。

我自己使用这种方法创建了一个 WebJob。就像一个魅力。