Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases de Kafka

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de conteneurs8 min de lecture7 commandes

Ce que tu vas faire

Kafka garde les messages dans un topic, qui est un journal : les producteurs ajoutent à la fin, et les consommateurs lisent à partir de n'importe quel endroit. Un topic est découpé en partitions, et chaque message reçoit un offset, son numéro dans sa partition, en comptant à partir de zéro. Ici, tu crées un topic, tu y ajoutes trois messages et tu les relis depuis le début.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de la leçon et attends qu'il indique qu'il est en marche. Le broker démarre en premier, puis la page, donc le premier démarrage dure environ une minute. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l'une après l'autre, dans la même session. Pour suivre les commandes ou taper les tiennes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.

1. Crée un topic

Cette commande demande à l'API web derrière Kafka UI un topic nommé orders avec trois partitions. Elle affiche 200, le code web qui veut dire « c'est fait », sur sa propre ligne : \n après %{http_code} termine la ligne. La deuxième commande liste les partitions : "partition":0, "partition":1 et "partition":2, chacune avec "offsetMax":0. Ce nombre est le prochain offset, celui que recevra le prochain message. Les trois partitions sont donc vides.

Commande
curl -s -X POST -H "Content-Type: application/json" -d '{"name":"orders","partitions":3,"replicationFactor":1,"configs":{}}' http://kafka-ui:8080/api/clusters/lab/topics -o /dev/null -w "%{http_code}\n"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

2. Produis trois messages

Chaque commande ajoute un message et affiche 200. Les deux premiers vont dans la partition 0 et le troisième dans la partition 1. Une commande doit nommer une partition. Dans la page elle-même, le bouton Produce Message (« produire un message ») du topic fait la même chose.

Commande
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":0,"key":"alice","value":"coffee","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":0,"key":"alice","value":"tea","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
curl -s -X POST -H "Content-Type: application/json" -d '{"partition":1,"key":"bob","value":"cake","headers":{},"keySerde":"String","valueSerde":"String"}' http://kafka-ui:8080/api/clusters/lab/topics/orders/messages -w "%{http_code}\n"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

3. Regarde les offsets et relis tout

Relance la première commande : la partition 0 dit maintenant "offsetMax":2, la partition 1 dit 1 et la partition 2 dit toujours 0. Chaque partition compte de son côté. La deuxième commande lit le topic depuis le début, comme le fait un nouveau consommateur. Elle affiche la partition et l'offset de chaque message à côté de sa valeur : coffee est dans la partition 0 à l'offset 0, tea dans la partition 0 à l'offset 1 et cake dans la partition 1 à l'offset 0. Les messages arrivent du plus récent au plus ancien, donc cake s'affiche avant coffee. L'ordre, c'est celui des offsets.

Commande
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
curl -s -N "http://kafka-ui:8080/api/clusters/lab/topics/orders/messages/v2?seekType=BEGINNING&limit=10" | grep -o '"partition":[0-9]*,"offset":[0-9]*\|"value":"[a-z]*"'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Le lab compte deux services, un broker et la page qui le lit, et rien ici ne se corrige tout seul : l'élève rend les offsets avant et après, avec une phrase expliquant pourquoi chaque partition commence à zéro. Le broker ne garde rien quand le lab s'arrête. Copiez-la dans votre propre module et modifiez-la, ou créez-en une de zéro avec le menu Lab du créateur de leçons.

À propos de ce labo et de sa source: Lab Kafka : topics, producteurs, consommateurs, partitions et offsets dans le navigateur

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.