在控制台模式下运行时,Kafka的并行性概念是否适用?

问题描述 投票:0回答:1

所以,我是Kafka的新手,并且已经阅读了一段时间。我在汇合处发现了此信息。

https://docs.confluent.io/current/streams/architecture.html

因此,据我所知,我有一个名为plain_text的主题,在这里我只是将一堆记录作为纯文本发送,而我只有一个具有单个主题和单个分区的代理。现在,我启动2个消费者实例ConsumerA和ConsumerB。由于我的分区数小于使用者数,因此只有一个使用者应主动使用消息,而使另一个处于空闲状态。如果我错了,请纠正我。

我使用kafka-console- *脚本进行了测试

启动一个动物园管理员集群

bin/zookeeper-server-start.sh config/zookeeper.properties

在本地主机上启动kafka代理:9092

bin/kafka-server-start.sh config/server.properties

使用一个分区创建主题plain_text

bin/kafka-topics.sh --create \
    --bootstrap-server localhost:9092 \
    --replication-factor 1 \
    --partitions 1 \
    --topic plain_text

开始制作人

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic plain_text

启动两个属于同一组的使用者(两次运行相同的命令)

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
    --topic plain_text \
    --formatter kafka.tools.DefaultMessageFormatter \
    --property print.key=true \
    --property print.value=true \
    --property group.id=test_group \

因此,两个使用者中的一个应该拥有该单个分区(如果我错了,请再次纠正我),但是我在生产者控制台上产生的任何内容都可以在两个使用者控制台上看到。为什么两个使用者都使用单个分区中的消息。我是否缺少某些东西,或者是否对kafka-console- *脚本应用了不同的规则。

apache-kafka kafka-consumer-api kafka-producer-api kafka-partition
1个回答
4
投票

如果未指定,则每次kafka-console-consumer运行都会创建一个不同的使用者组ID,您可以使用以下方法进行检查:

kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list | grep console-consume
console-consumer-68642
console-consumer-30430

您可以添加--group your_group_name--consumer-property group.id=your_group_name专门为控制台使用者注册group.id

© www.soinside.com 2019 - 2024. All rights reserved.