所以,我是Kafka的新手,并且已经阅读了一段时间。我在汇合处发现了此信息。
https://docs.confluent.io/current/streams/architecture.html
因此,据我所知,我有一个名为plain_text的主题,在这里我只是将一堆记录作为纯文本发送,而我只有一个具有单个主题和单个分区的代理。现在,我启动2个消费者实例ConsumerA和ConsumerB。由于我的分区数小于使用者数,因此只有一个使用者应主动使用消息,而使另一个处于空闲状态。如果我错了,请纠正我。
我使用kafka-console- *脚本进行了测试
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
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- *脚本应用了不同的规则。
如果未指定,则每次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