Получить последнее сообщение из сценария консоли потребителя 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 для выборки.