从kafka使用者控制台脚本获取最后一条消息

Pau*_*rcq 16 apache-kafka kafka-consumer-api

我们可以通过以下方式获取来自Kafka的所有消息:

 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
Run Code Online (Sandbox Code Playgroud)

有没有办法只获取最后一条消息

编辑:

如果您只想监视--max-messages 10流中的一些消息(),一个方便的命令是:

watch -n5 "./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic auction --max-messages 10"

Ayd*_* K. 28

我不知道任何自动化,但使用这个简单的两步方法,它应该工作.请注意,在我的情况下,它是一个分区主题,您可以保留它的参数,以防您有一个未分区的主题:

1)获取主题的最大偏移量(+他们的分区):

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic mytopic

mytopic:2:11
mytopic:1:7
mytopic:0:15
mytopic:3:8
Run Code Online (Sandbox Code Playgroud)

2)选择一个主题(+分区)并提供偏移量 - n作为参数:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --offset 10 --partition 0  
Run Code Online (Sandbox Code Playgroud)

该主题的最后n条消息将打印到控制台.在我的例子中,它将显示5条消息(= 15-10).

  • 应当指出,这种方法通常是不可靠的,因为并非每个偏移量都必须保存一条消息。可能存在差距,例如在压缩日志或事务中止的情况下。 (4认同)

小智 7

使用 KafkaCat 偏移参数-o可以指定为负值:

kcat -b localhost:9092 -t mytopic -o -1

用于-o -5最后 5 条消息等。