0

我想通过事件中心将我的应用程序与多种类型的设备(如移动应用程序、不同类型的嵌入式系统等)集成。所有不同类型的发送者都以特定格式发送数据,他们也需要特定的处理程序。如下图所示

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

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

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

4

1 回答 1

0

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

原因如下:

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

现在来到您的问题,您的功能 - 是基于事件的属性过滤事件 - 这不是流级别的操作 - 而是事件级别的操作。

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

现在,在您决定使用 EventHubs 之前要回答的第一个问题是:您是否预见到 EventHubs 提供的规模要求与提供您正在寻找的确切语义的“直接使用 ServiceBus 主题”。

!斯里

于 2015-05-20T03:18:11.773 回答