Nous pouvons recevoir tous les messages de Kafka en faisant:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
Y a-t-il un moyen de recevoir seulement le dernier message ?
MODIFIER:
Si vous souhaitez uniquement surveiller certains messages (--max-messages 10
) dans votre flux, une commande pratique est la suivante:
watch -n5 "./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic auction --max-messages 10"
Je ne suis au courant d'aucun automatisme, mais en utilisant cette approche simple en deux étapes, cela devrait fonctionner. Notez que dans mon cas, il s’agissait d’un sujet partitionné, vous pouvez en laisser les paramètres au cas où vous en auriez un:
1) Obtenez le décalage maximum pour votre sujet (+ leurs partitions):
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) Choisissez un sujet (+ partition) et indiquez le paramètre offset - n:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --offset 10 --partition 0
Les n derniers messages du sujet seront imprimés sur la console . Dans mon exemple, 5 messages seront affichés (= 15-10).
J'ai probablement eu la bonne réponse de certains googler http://grokbase.com/t/kafka/users/145x930s27/how-to-get-last-message
Quelqu'un suggère de trouver le dernier décalage avec getOffsetBefore api puis En utilisant ce décalage - 1 à récupérer.
Je pense qu'avec la ligne de commande suivante, cela fonctionnera (c'est-à-dire sans le début de la ligne -)
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test