代码之家  ›  专栏  ›  技术社区  ›  Dev9321

Kafka消费者组没有消费来自所有消费者的消息

  •  0
  • Dev9321  · 技术社区  · 2 年前

    我用分区和复制因子创建了kafka主题

    enter image description here

    然后我开始和我的制作人一起制作信息

    enter image description here

    我在消费者团体的帮助下平行启动了两个消费者。

    enter image description here

    当我停止一个消费者时,另一个消费者开始工作。

    我怀疑下载kafka时的默认配置会误导我。

    我希望我的所有消费者都需要同时接收消息。

    0 回复  |  直到 2 年前
        1
  •  0
  •   OneCricketeer Gabriele Mariotti    2 年前

    一个组中的两个使用者不能同时读取同一个分区。您将需要验证记录是否写入两个分区,并且没有一起进行批处理,这是控制台生产者对小记录批处理的默认行为

    使用GetOffsetShell工具检查每个分区有多少偏移量(大约为记录数)。您也可以使用 kafka-consumer-groups 命令查看组的滞后。如果您看到所有分区都没有延迟,那么您已经使用了主题中所有使用者的所有记录(请注意,一个分区的开始和结束偏移量可能相同,GetOffsetShell也会显示该值,这意味着该分区是空的,从而解释了为什么只有一个使用者打印任何数据)。

        2
  •  0
  •   Dev9321    2 年前

    Kafka的默认批处理大小为16384(字节),一旦我们开始产生足够的消息来填充缓冲区大小,它就会更改分区。

    从kafka2.4开始,默认分区已从循环更改为 sticky

    所以我像这样覆盖了这个属性,它起作用了。

    C:\kafka\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --batch-size=1 --topic test32

    我们还可以通过指定如下分区id来向特定分区生成消息:

    C:\kafka\bin\windows>kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test32 -property "parse.key=true" -property "key.separator=:"

    0:test 1:test2

    哪里 0 1 分区ID和 test , test2 是值。

    enter image description here