我们是否有其他选择,例如从Kafka主题中获取最近的10/20 /等消息。我可以看到--from-beginning选项来提取该主题中的所有消息,但是如果我只想获取少量的消息(首先,最后,中间或最新的10个消息),我们有一些选择吗?
答案 0 :(得分:1)
您可以使用--max-messages N
来获取主题的前N
条消息。
例如,要获取前10条消息,请运行
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --max-messages 10
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --max-messages 10
要获取最后N条消息,您需要定义一个特定的分区和偏移量:
bin/kafka-simple-consumer-shell.sh --bootstrap-server localhost:9092 --topic test--partition testPartition --offset yourOffset
同样,在这种情况下,您必须定义分区和偏移量。 例如,您可以运行以下命令以获得从所选偏移量开始的N条消息:
bin/kafka-simple-consumer-shell.sh --bootstrap-server localhost:9092 --topic test--partition testPartition --offset yourOffset --max-messages 10
如果您不想坚持使用二进制文件,建议您使用kt
,它是Kafka命令行工具,具有更多选项和功能。
答案 1 :(得分:0)
如果不指定偏移量和分区,则只能使用下一个N或第一个N。要在无限制流的“中间”进行消耗,您需要提供偏移量
除了控制台用户外,还有kafkacat
前二十名
kafkacat -C -b -t topic -o earliest -c 20
从前20个(从零分区开始)
kafkacat -C -b -t topic -P 0 -o -20