如何在Kafka中创建一个新的消费者组。

10

我按照快速入门指南在此本地运行了kafka,

然后我在config/consumer.properties中定义了我的消费者组配置,以便我的消费者可以从定义的group.id中接收消息。

运行以下命令:

bin/kafka-consumer-groups.sh --list --bootstrap-server localhost:9092

导致,

test-consumer-group  <-- group.id defined in conf/consumer.properties
console-consumer-67807 <-- when connecting to kafka via kafka-console-consumer.sh

我能够通过一个基于Python的消费者连接到 Kafka,该消费者配置了使用提供的group.id,即test-consumer-group

首先,我不理解 Kafka 是如何/何时创建消费者组的。它似乎在某个时刻加载conf/consumer.properties文件,并在通过kafka-console-consumer.sh进行连接时隐式地创建消费者组(在我的情况下是console-consumer-67807)。

我该如何显式地创建自己的消费者组,比如说my-created-consumer-group

1个回答

17

您不需要显式地创建消费者组,而是构建属于消费者组的消费者。无论使用哪种技术(Spark、Spring、Flink等),每个Kafka消费者都将拥有一个消费者组。消费者组可针对每个单独的消费者进行配置。

它似乎在某个时间点加载了conf/consumer.properties文件,并在通过kafka-console-consumer.sh连接时隐式创建了消费者组(在我的情况下为console-consumer-67807)

如果您没有告诉控制台消费者实际利用该文件,它就不会被考虑在内。

以下是提供消费者组名称的几种替代方法:

带有属性文件的控制台消费者(--consumer.config)

这是文件config/consumer.properties应该看起来像的方式

# consumer group id
group.id=my-created-consumer-group

接下来是如何确保控制台消费者考虑这个group.id的方法:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning --consumer.config /path/to/config/consumer.properties

使用--group的控制台消费者

对于控制台消费者,如果您不提供自己的消费者组(通过添加--group选项),则消费者组将自动以前缀为“console-consumer”和类似于PID的后缀创建:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning --group my-created-consumer-group

标准基于代码的消费者API

使用标准的JAVA/Scala/...消费者API时,您可以通过属性提供消费者组:

Properties settings = new Properties();
settings.put(ConsumerConfig.GROUP_ID_CONFIG, "basic-consumer");
// set more properties

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(settings)) {
consumer.subscribe(Arrays.asList("test-topic")

1
如果我尚未创建 my-created-consumer-group,那么上述命令是否有效?换句话说,如果一个消费者连接到任意的 group.id,kafka 是否会接受并创建消费者组? - laxman
2
是的,没错 :) 如果一个具有随机group.id的消费者第一次消费消息,Kafka会检查该消费者组是否已经存在。如果该消费者组之前不存在,则消费者将从开头读取主题(除非另有说明)。 - Michael Heil
控制台消费者正在准确执行此操作:创建随机的group.id并能够读取数据。 - Michael Heil
1
你可以在这里仔细阅读,了解Kafka中消费者组的概念。由于在使用Kafka时这非常重要,我强烈建议你对此有一个良好的理解! - Michael Heil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接