我有一个 Kafka 应用程序,我一直在使用 kafka-console-consumer.sh 来消费消息,如下所示:
$./kafka-console-consumer.sh --zookeeper zookeeperhost:2181 --topic myTopic
它提供了我通过 Kafka 消费者写入 Kafka 代理的所有消息,没有任何遗漏。
最近,我将应用程序部署在无法访问 zookeeperhost 的不同环境中(由于某种原因)。所以我使用 kafka-simple-consumer-shell.sh 代替如下:
$./kafka-simple-consumer-shell.sh --broker-list brokerhost:9092 --topic myTopic --partition 0 --max-messages 1
但是有了这个,我看到很少有消息(大约 5000 条中的 2-4 条)丢失。有人可以解释一下 kafka-simple-consumer-shell.sh 如何读取消息。
我怀疑有些消息可能会发送到某个不同的分区,因为我只是从分区 0 读取,所以我不会每次都收到所有消息。但是我不知道如何检查有多少个分区?其他分区的 id 是什么?我试过 1 但它不起作用。
有人可以帮忙吗。