如何从Kafka主题获取最新消息

时间:2018-10-03 11:24:32

标签: apache-kafka kafka-consumer-api

我们是否有其他选择,例如从Kafka主题中获取最近的10/20 /等消息。我可以看到--from-beginning选项来提取该主题中的所有消息,但是如果我只想获取少量的消息(首先,最后,中间或最新的10个消息),我们有一些选择吗?

2 个答案:

答案 0 :(得分:1)

前N条消息

您可以使用--max-messages N来获取主题的前N条消息。

例如,要获取前10条消息,请运行

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning  --max-messages 10

接下来的N条消息

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --max-messages 10

最近N条消息

要获取最后N条消息,您需要定义一个特定的分区和偏移量:

bin/kafka-simple-consumer-shell.sh --bootstrap-server localhost:9092 --topic test--partition testPartition --offset yourOffset

M到N条消息

同样,在这种情况下,您必须定义分区和偏移量。 例如,您可以运行以下命令以获得从所选偏移量开始的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