Shu*_*g b 0 apache-kafka kafka-consumer-api kafka-producer-api kafka-partition
所以,我是 Kafka 的新手,我已经阅读了一段时间。我在 confluent 上找到了这些信息。
https://docs.confluent.io/current/streams/architecture.html
所以我从这里了解到,假设我有一个名为 plain_text 的主题,我只是将一堆记录作为纯文本发送,而我只有一个具有单个主题和单个分区的代理。我现在启动 2 个消费者实例 ConsumerA 和 ConsumerB。由于我的分区计数小于消费者计数,因此只有一个消费者应该主动消费消息,而另一个消费者则处于空闲状态。如果我错了,请纠正我。
我使用 kafka-console-* 脚本进行了测试
bin/zookeeper-server-start.sh config/zookeeper.properties
Run Code Online (Sandbox Code Playgroud)
bin/kafka-server-start.sh config/server.properties
Run Code Online (Sandbox Code Playgroud)
bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 1 \
--topic plain_text
Run Code Online (Sandbox Code Playgroud)
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic plain_text
Run Code Online (Sandbox Code Playgroud)
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 \
Run Code Online (Sandbox Code Playgroud)
因此,两个消费者中的一个应该拥有该单个分区(如果我错了,请再次纠正我),但是我在生产者控制台上生成的任何内容在两个消费者控制台上都是可见的。为什么两个消费者都在使用来自单个分区的消息。我是否遗漏了什么或对 kafka-console-* 脚本执行了不同的规则。
如果未指定,则每次 kafka-console-consumer 运行将创建不同的消费者组 ID,您可以使用以下方法进行检查:
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list | grep console-consume
console-consumer-68642
console-consumer-30430
Run Code Online (Sandbox Code Playgroud)
您可以添加--group your_group_name或--consumer-property group.id=your_group_name专门group.id为您的控制台消费者注册
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |