web-dev-qa-db-fra.com

Comment faire en sorte que le consommateur de kafka lise depuis le dernier décalage consommé mais pas depuis le début

Je suis nouveau sur kafka et j'essaie de comprendre s’il existe un moyen de lire les messages du dernier décalage consommé, mais pas du début.

J'écris un exemple de cas pour que mon intention ne soit pas déviée.

Eg:
1) I produced 5 messages at 7:00 PM and console consumer consumed those.
2) I stopped consumer at 7:10 PM
3) I produced 10 message at 7:20 PM. No consumer had read those messages.
4) Now, i have started console consumer at 7:30 PM, without from-beginning.
5) Now, it Will read the messages produced after it has started. Not the earlier ones, which were produced at 7.20 PM

Existe-t-il un moyen d’obtenir les messages produits à partir du dernier offset consommé?

9
Srini

Je suis nouveau sur kafka et j'essaie de comprendre s’il existe un moyen de lire les messages du dernier décalage consommé, mais pas du début.

Oui, il est possible d'utiliser le consommateur de console pour lire à partir du dernier décalage consommé. Vous devez ajouter consumer.config flag lors de l'appel de kafka-console-consumer.

Exemple:-

[root@sandbox bin]# ./kafka-console-consumer.sh --topic test1 --zookeeper localhost:2181 --consumer.config /home/mrnakumar/consumer.properties

Ici /home/mrnakumar/consumer.properties est un fichier contenant group.id . Voici à quoi ressemble /home/mrnakumar/consumer.properties: -

group.id = consoleGroup

Sans utiliser consumer.config, il est possible de lire depuis le début [en utilisant - depuis le début] ou à la fin du journal uniquement. Fin du journal signifie tous les messages publiés après le démarrage du consommateur.

8
mrnakumar

Vous devez définir le paramètre auto.offset.reset dans votre configuration consommateur sur largest afin qu'il lise tous les messages après le dernier décalage validé.

3
leshkin

Si vous définissez auto.offset.reset = premiers, ET un groupe fixe.id = quelque chose dans la configuration du consommateur démarrera le consommateur au dernier décalage validé. Dans votre cas, il devrait commencer à consommer dès le premier message à 7h20. Si vous voulez qu'il commence à lire les messages postés APRÈS avoir commencé, alors auto.offset.reset = latest ignorera les 10 messages envoyés à 7h20 et lira tous ceux qui arriveront après son démarrage.

Si vous souhaitez que cela commence au début, vous devez soit appeler seekToBeginning après le premier consommateur.poll (), ou changer l'ID du groupe de consommateurs en un élément unique.

0
George Smith