Получить последнее сообщение из сценария консоли потребителя kafka

мы можем получить все сообщения от Кафки, сделав:

 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

есть ли способ сделать только последнее сообщение ?

EDIT:

Если вы просто хотите контролировать некоторые мессы (--max-messages 10) в вашем потоке удобная команда:

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

3 ответов


Я думаю, что со следующей командной строкой он будет работать (т. е. без ... С-начало) :

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test

Я не знаю никакого автоматизма, но, используя этот простой двухэтапный подход, он должен работать. Обратите внимание, что в моем случае это была секционированная тема, вы можете оставить для нее параметры, если у вас есть неразделенная:

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

2) Выберите тему (+раздел) и укажите смещение-n параметр:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --offset 10 --partition 0  

последние N сообщений тема будет напечатана на консоли. В моем примере он покажет 5 сообщений (=15-10).


Я получил, вероятно, правильный ответ от некоторых googling http://grokbase.com/t/kafka/users/145x930s27/how-to-get-last-message

там кто-то предлагает найти последнее смещение с getOffsetBefore api, а затем используя это смещение-1 для выборки.