如何在EventHub,Azure中提到PartitionKey - ConsumerGroup绑定

时间:2015-05-12 05:56:42

标签: azure-eventhub

我希望通过Event Hub将我的应用程序与移动应用程序,不同类型的嵌入式系统等多种类型的设备集成。所有不同类型的发件人都以特定格式发送数据,并且他们也需要特定的处理程序。如下所示

Mobile APP (Partition key “MobileAPP”) = Consumer Group 1
Embedded System 1 (Partition key “Embedded1”) =  Consumer Group 2
Embedded System 2 (Partition key “Embedded2”) =  Consumer Group 2

那么请您告诉我如何在Event Hub实现中指定上述绑定,以便每种类型的消息都应由其特定的消费者组处理?

通常我在Receiver方面只看到提到的默认消费者群组名称。但我可以在EventProcessorHost实施期间使用方法namespaceManager.CreateConsumerGroupIfNotExists(ehd.Path, consumerGroupName)创建新的Consumergroup。但是无法理解我如何确保与特定分区键关联的所有消息都将由其关联使用者组进行处理。我应该在哪里提到他们的PartitionKey,ConsumerGroup绑定。

1 个答案:

答案 0 :(得分:0)

简而言之,没有直接的方法来指定PartitionKey到ConsumerGroup绑定。

这就是原因:

EventHubs是一种高吞吐量持久流,提供流级语义。 简单地说,想象它相当于一个简单的内存中流,你在Stream上获得一个Cursor(使用EventHubClient ReceiveByOffset或ReceiveByTimeStamp Api' s)并调用ReadNext()来获取下一个事件。如果您希望这样的流可以大规模地保存事件 - 1天的数据 - 并且您希望它是持久的(即使您的应用程序处理流,崩溃,您也不会这样做的情况)我想丢失数据) - 当你需要EventHub时。

现在来看你的问题,你所使用的功能 - 是根据事件上的属性过滤事件 - 这不是流级操作 - 而是事件级操作。

自己实现它的典型方法 - 从EventHubs中拉出事件(事件流)并让工作者处理(在你的情况下,按分区键过滤)事件并将它们推送到单个队列(或者你甚至可以分区你的将一组设备推送到主题并使用过滤器获取数据的订阅的数据。

现在,在您决定使用EventHub之前要回答的第一个问题是:您是否预见到EventHubs提供的Scale要求vs"直接使用ServiceBus主题"它提供了您正在寻找的确切语义。

HTH! SREE