Kafka 2.12消费者组(带命令提示符)-第二个消费者似乎无法接收消息?

qhhrdooz  于 2023-03-01  发布在  Apache
关注(0)|答案(1)|浏览(107)

我从Apache Kafka 2.12开始,在使用命令提示符练习使用者组时遇到了问题:当创建两个使用者并将其设置为订阅组中的某个主题时,似乎只有一个使用者收到所有消息,另一个使用者什么也收不到。
因此,在运行Zookeeper和Kafka服务器之后(假设我们重新开始),我在第三个命令提示符处键入以下内容来创建主题:
kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 2 --topic test-TOPIC
接下来,我打开第4个命令提示符并输入以下命令:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-TOPIC --group learning
最后,我打开第5个命令提示符,输入以下命令:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-TOPIC --group learning
现在,我返回到第3个命令提示符,开始输入以下消息(用新行分隔):

One
Two
Three
Four
Five
Six

但是只有第5个命令提示符接收到消息。第4个命令提示符什么也得不到。从我在网上看到的教程中,它按计划工作,产生了以下结果:
第5个命令提示符获取:

One
Three
Five

第4个命令提示符获取:

Two
Four
Six

那么...我到底哪里做错了

qv7cva1a

qv7cva1a1#

Kafka并不保证生成的消息在一个主题中均匀分布(对于6条消息,并不是2个分区中的每一个都得到3条消息)。
因此,例如,如果Six在分区1中结束,它仍然按预期工作-同一组的两个消费者不会看到相同的消息,这是消费者组的唯一保证。
此外,在Kafka 2.7版本中,一个记录批中的所有消息都将被发送到一个分区中。(2.12目前还不是有效的Kafka版本,这个数字指的是编译代码的Scala版本)

相关问题