什么是 azure Event Hub 中的消费者组?

What is Consumer Group in azure Event Hub?

任何人都可以弄清楚什么是 Azure 事件中心中的使用者组。它有什么用?我浏览了很多网站,但无法得到明确的答案。

来自docs

Consumer groups: A view (state, position, or offset) of an entire event hub. Consumer groups enable consuming applications to each have a separate view of the event stream. They read the stream independently at their own pace and with their own offsets.

图表:

根据这个消费者组是逻辑上分离你的消费者的方式,所以他们只看到他们感兴趣的事件。

将消费者组视为 a label that groups one or more event consumers together 的集合。它通常以消费者在应用程序中的职责命名(例如:“Telemetry”、“OrderProcessing”)。创建事件中心时会创建一个名为“$Default”的默认使用者组。

如之前的回答所述,消费者组允许多个应用程序拥有自己的事件流视图,从而允许每个应用程序以自己的速度独立读取流。例如,您可能有一个将事件数据写入长期存储的下游存储写入器应用程序,然后是另一个执行复杂事件处理的应用程序——这两个应用程序将属于两个不同的使用者组。

由于an Event Hubs consumer is associated with a specific Event Hubs and consumer group,如果在构造EventHubConsumerClients时传入同一个消费者组作为参数,那么这些客户端将关联到同一个消费者组(从而对事件消费者进行分组) :

var consumer = new EventHubConsumerClient(consumerGroup, connectionString, eventHubName);

请注意,如果您使用的是标准层服务,则只能有多个使用者组。

在 Azure 事件中心,consumer groups 是一种限制同一分区的并发读取器数量的方法。

它们没有任何实际用途,也许只是一个实用的用途,即引导您避免从同一系统或应用程序多次读取相同的事件。

还有一个定价方面,即要使多个应用程序订阅同一事件流,您可能需要升级到更好的计划(例如,基本计划只允许一个消费者组)。

正如其他人指出的那样,该文档将消费者组解释为“整个事件中心的视图”。然而,这个观点并没有实际意义。

您可以 运行 在单个消费者组上使用 5 个不同的应用程序,但这可能是不切实际的,因为如果您需要的话,这不会扩展到第 6 个应用程序,因为并发限制为 5 个每个消费者组的同一分区的读者。

与 Kafka 消费者群体的比较

Event Hub 消费者组与 Kafka 消费者组完全不同(当您继续阅读主题时会自动存储偏移量)。

此处澄清:https://github.com/Azure/azure-event-hubs-for-kafka#more-faq

使用 Kafka API 时,事件中心 支持 Kafka 消费者组。