用于处理Event Hub数据的Azure服务是哪种?

时间:2016-08-08 10:01:30

标签: azure events consumer azure-eventhub

我很感激帮助为我的场景选择最适合的Azure服务 - 我刚开始使用Azure服务,而且我的知识非常有限。

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

我如何在“Azure Orientated Architecture”中实现这一点?

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

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

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

稍后编辑:

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

2 个答案:

答案 0 :(得分:2)

您可以看到有关IoT Hub的帖子。它与Event Hub基本相同。 (帖子中的每个示例都可以在事件中心上使用)。 https://stackoverflow.com/a/38682324/6659347

此外,对于Event Hub,您还可以使用具有事件中心触发器的Azure功能 - 该功能将在事件中心收到新事件时运行。它还将满足您对缩放的要求。

如果您正在与多个消费者合作,请确保使用Event Hub使用者组,以便每个消费者可以独立阅读流。

答案 1 :(得分:1)

我说将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。像魅力一样。