【问题标题】:difference between groupid and consumerid in Kafka consumerKafka消费者中groupid和consumerid的区别
【发布时间】:2016-04-05 16:31:00
【问题描述】:

我注意到 Consumer 配置有两个 ID。一个是group.id(强制),第二个是consumer.id(非强制)。

这两个 ID 有什么区别?

【问题讨论】:

  • 基于消费者组,我们可以确定消费者的消息模型: ** 如果所有消费者实例具有相同的消费者组,那么这就像传统的队列平衡消费者负载一样。如果所有消费者实例都有不同的消费者组,那么这就像发布-订阅一样,所有消息都广播给所有消费者。**。根据上述声明,作为发布-订阅的所有消费者组都应该是唯一的名称。那为什么不能成为消费者ID。为什么是消费者组 ID?组是什么意思

标签: apache-kafka kafka-consumer-api


【解决方案1】:

消费者组是 Kafka 抽象,支持点对点和发布/订阅消息传递。消费者可以通过将 group.id 设置为 group_1 来加入消费者组(假设为 group_1)。消费者组也是支持数据并行消费的一种方式,即同一消费者组的不同消费者并行消费来自不同分区的数据。

除了 group.id 之外,每个消费者还使用 consumer.id 向 Kafka 代理标识自己。 Kafka 使用它来识别特定消费者组的当前 ACTIVE 消费者。

阅读this documentation了解更多详情。

【讨论】:

  • 请举更多例子来理解。什么是同一消费者组的不同消费者并行消费来自不同分区的数据。。如何在同一消费组中添加不同的消费者?我使用 group.id=group1 运行 Java Consumer 程序。它消耗了消息。我在不更改 goup.id 的情况下运行了相同的程序。第一个程序消费消息。第二个消费者无法消费消息。组在这里是什么意思?
  • 如果你没有对主题进行分区,那么只有 1 个消费者会消费消息。如果您希望两个消费者(属于同一个消费者组)并行消费消息,那么您需要对主题进行分区。我建议您阅读文档
  • 感谢您提供更多信息。我在一个代理中创建了一个具有 3 个分区的主题演示。我用演示组运行程序,它正在消耗消息。我再次运行具有相同组 ID 的程序。但是,第二个程序无法使用消息。如果将组 ID 名称更改为 demo-group1。它运作良好。请告诉我消费群体的概念。
  • 我读了教程。我需要了解如何使用 java API 创建拥有更多消费者的消费者组。我正在使用 java 简单的消费者 API。请帮助我。
  • 阅读文档,对于consumer.id,描述状态为“如果未设置则自动生成”。我认为这可能意味着如果手动设置,consumer.id 对于每个消费者来说应该是唯一的?想知道如果您在多个消费者之间重复使用消费者 ID(例如如何共享消费者组 ID)会发生什么 - 会出现问题,或者它可以正常工作,但对于跟踪/调试组中的活跃消费者来说很混乱?
猜你喜欢
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 2017-01-04
  • 2017-10-08
  • 2016-04-13
  • 1970-01-01
相关资源
最近更新 更多