Was du machst
Kafka speichert Nachrichten in einem Topic. Das ist ein Log: Producer hängen hinten etwas an, und Consumer lesen ab einer beliebigen Stelle. Ein Topic ist in Partitionen unterteilt, und jede Nachricht bekommt einen Offset, ihre Nummer in der eigenen Partition, gezählt ab null. Hier legst du ein Topic an, fügst drei Nachrichten hinzu und liest sie von Anfang an wieder aus.
Bevor du anfängst
Notiz
Klicke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Zuerst startet der Broker und danach die Seite, deshalb dauert der erste Start etwa eine Minute. Jede Schaltfläche Ausführen unten tippt ihren Befehl ins Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Wenn du zuschauen oder eigene Befehle tippen willst, klicke in der Leiste auf Terminal öffnen (neuer Tab).
1. Lege ein Topic an
Dieser Befehl bittet die Web-API hinter Kafka UI um ein Topic namens orders mit drei Partitionen. Er gibt 200 aus, das Wort des Webs für „erledigt“, in einer eigenen Zeile: \n nach %{http_code} beendet die Zeile. Der zweite Befehl listet dann die Partitionen auf: "partition":0, "partition":1 und "partition":2, jede mit "offsetMax":0. Diese Zahl ist der nächste Offset, den die nächste Nachricht bekommt. Alle drei Partitionen sind also leer.
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"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
2. Erzeuge drei Nachrichten
Jeder Befehl fügt eine Nachricht hinzu und gibt 200 aus. Die ersten beiden gehen an Partition 0 und die dritte an Partition 1. Ein Befehl muss eine Partition nennen. Auf der Seite selbst macht die Schaltfläche Produce Message am Topic dasselbe.
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"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
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"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
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"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
3. Sieh dir die Offsets an und lies alles zurück
Führe den ersten Befehl noch einmal aus: Partition 0 zeigt jetzt "offsetMax":2, Partition 1 zeigt 1, und Partition 2 zeigt weiter 0. Jede Partition zählt für sich. Der zweite Befehl liest das Topic von Anfang an, so wie es ein neuer Consumer tut. Er gibt zu jeder Nachricht Partition und Offset neben dem Wert aus: coffee ist Partition 0, Offset 0, tea ist Partition 0, Offset 1 und cake ist Partition 1, Offset 0. Sie kommen neueste zuerst an, deshalb steht cake vor coffee. Die Reihenfolge bestimmen die Offsets.
curl -s http://kafka-ui:8080/api/clusters/lab/topics/orders | grep -o '"partition":[0-9]*\|"offsetMax":[0-9]*'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
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]*"'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Für Lehrkräfte
Tipp
Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab abläuft: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Das Lab besteht aus zwei Diensten, einem Broker und der Seite, die ihn ausliest. Nichts hier bewertet sich selbst: Die Lernenden geben die Offsets davor und danach ab, dazu einen Satz, warum jede Partition bei null beginnt. Der Broker behält nichts, wenn das Lab endet. Kopiere es in dein eigenes Modul und ändere es, oder baue im Lektionseditor über das Menü Lab ein neues von Grund auf.