demos/kafka/training
12 days agoFix & Refactor: Restore-Behandlung wurde _allen_ aktiven Partitionen zuteil
Kai Moritz [Sat, 2 Nov 2024 14:03:10 +0000 (15:03 +0100)]
Fix & Refactor: Restore-Behandlung wurde _allen_ aktiven Partitionen zuteil

* Durch das vorausgehende Refactoring wurde deutlich, dass die Behandlung,
  die den _neu_ hinzugefügten Partitionen zugedacht war, allen in
  `assignedPartitions` vermerkten Partitionen wiederfahren ist.
* Dies ist für den aktuellen Entwicklungsstand ggf. egal, da der wegen dem
  Co-Partitioning (noch!) benötigte `RangeAssignor` eh _zuerst alle_
  Partitionen entzieht, bevor er _dann alle_ neu zuteilt.
* Da der Code aber auch mit dem neuen Consumer-Rebalance Protokoll
  funktionieren muss, wurde das Refactoring hier fortgeführt und so
  vollendet, dass nun _alle_ Aktionenen _nur noch_ von den Callbacks
  `onPartitionsAssigned()` und `onPartitionsRevoked()` ausgeht.

12 days agoRefactor: Handling von pause/resume vollständig in State-Change-Methoden
Kai Moritz [Sat, 2 Nov 2024 12:58:35 +0000 (13:58 +0100)]
Refactor: Handling von pause/resume vollständig in State-Change-Methoden

12 days agoDRY für state-change zu RESTORING
Kai Moritz [Sat, 2 Nov 2024 12:37:38 +0000 (13:37 +0100)]
DRY für state-change zu RESTORING

12 days agoRefactor: Neue, klarere ``switch``-Syntax
Kai Moritz [Sat, 2 Nov 2024 10:34:38 +0000 (11:34 +0100)]
Refactor: Neue, klarere ``switch``-Syntax

12 days agoRefactor: DRY für state-change zu UNASSIGNED
Kai Moritz [Sat, 2 Nov 2024 10:33:53 +0000 (11:33 +0100)]
Refactor: DRY für state-change zu UNASSIGNED

12 days agoRefactor: DRY für state-change zu ASSIGNED
Kai Moritz [Sat, 2 Nov 2024 10:21:28 +0000 (11:21 +0100)]
Refactor: DRY für state-change zu ASSIGNED

12 days agoRefactor: Logik für Counter in Klasse `CounterState` extrahiert
Kai Moritz [Sat, 2 Nov 2024 09:21:56 +0000 (10:21 +0100)]
Refactor: Logik für Counter in Klasse `CounterState` extrahiert

12 days agoDer Zustand wird aus dem ``state``-Topic wiederhergestellt
Kai Moritz [Mon, 28 Oct 2024 09:28:50 +0000 (10:28 +0100)]
Der Zustand wird aus dem ``state``-Topic wiederhergestellt

12 days agoFix: `poll()` liefert nicht immer Nachrichten zu _allen_ Partitionen
Kai Moritz [Mon, 28 Oct 2024 10:16:12 +0000 (11:16 +0100)]
Fix: `poll()` liefert nicht immer Nachrichten zu _allen_ Partitionen

* Ein Aufruf von `poll()` liefert _nicht unbedingt_ Nachrichten zu _jeder_
  Partition, die der Instanz gerade zugeteilt ist.
* Daher konnte es auftreten, dass eine Phase nie beendet wurde, wenn
  `poll()` nur Nachrichten zu einer Untermenge der aktiven Partitionen
  geliefert hat.

12 days agoFix: Nachrichten wurden ggf. doppelt verarbeitet
Kai Moritz [Mon, 28 Oct 2024 10:14:31 +0000 (11:14 +0100)]
Fix: Nachrichten wurden ggf. doppelt verarbeitet

* Wenn man in einer Schliefe die Nachrichten pro Partition separat
  verarbeitet...
* ...dann sollte man in jedem Schleifendurchlauf auch nur die Nachrichten
  der gerade zu verarbeitenden Partition abrufen!

12 days agoFehler im Logging der aktiven Phase korrigiert und Meldungen verbessert
Kai Moritz [Mon, 28 Oct 2024 10:13:05 +0000 (11:13 +0100)]
Fehler im Logging der aktiven Phase korrigiert und Meldungen verbessert

12 days agoFix: Der Rebalance-Listener wurde nie registriertgit diff
Kai Moritz [Mon, 28 Oct 2024 09:50:00 +0000 (10:50 +0100)]
Fix: Der Rebalance-Listener wurde nie registriertgit diff

12 days agoLog-Meldungen für das Senden des Zählerstands ergänzt
Kai Moritz [Mon, 28 Oct 2024 09:49:26 +0000 (10:49 +0100)]
Log-Meldungen für das Senden des Zählerstands ergänzt

12 days agoLog-Meldungen zum Fortschritt beim Versenden des Zähler-Status ergänzt
Kai Moritz [Mon, 28 Oct 2024 09:49:26 +0000 (10:49 +0100)]
Log-Meldungen zum Fortschritt beim Versenden des Zähler-Status ergänzt

12 days agoFix: Fehler müssen wie bestätigte Nachrichten behandelt werden
Kai Moritz [Mon, 28 Oct 2024 07:12:15 +0000 (08:12 +0100)]
Fix: Fehler müssen wie bestätigte Nachrichten behandelt werden

* Ohne explizite Fehlerbehandlung müssen auch die nicht bestätigten
  Nachrichten als `acked` gezählt werden.
* Ansonsten würde die Verarbeitung in einem ``poll()``-Durchlauf mit Fehler
  hängen bleiben, da niemals alles "gesehenen" Nachrichten auch als
  "bestätigt" gezählt würden.
* Dabei: Producer-Code an den aus `producer/spring-producer` angeglichen.

12 days agoDer Value-Typ in dem Topic `state` ist jetzt auch vom Typ `String`
Kai Moritz [Mon, 28 Oct 2024 07:00:48 +0000 (08:00 +0100)]
Der Value-Typ in dem Topic `state` ist jetzt auch vom Typ `String`

* Dadurch wird die Kontrolle der Ergebnisse einfacher, da alle Nachrichten
  auch einfach mit `kafkacat` gelesen werden können.

12 days agoDer Zustand des Zählers wird in einem compacted Topic abgelegt
Kai Moritz [Mon, 28 Oct 2024 08:39:10 +0000 (09:39 +0100)]
Der Zustand des Zählers wird in einem compacted Topic abgelegt

* Der Consumer zählt, welche Nachrichten gesendet und welche bestätigt
  wurden.
* Über einen `Phaser` wird sichergestellt, dass alle Nachrichten von den
  zuständigen Brokern bestätigt wurden, bevor der nächste ``poll()``-Aufruf
  erfolgt.

12 days agoGET-Endpoint zum Abfragen der Schlüssel-Zählungen ergänzt
Kai Moritz [Sun, 27 Oct 2024 12:38:47 +0000 (13:38 +0100)]
GET-Endpoint zum Abfragen der Schlüssel-Zählungen ergänzt

* Zugriff auf die `counterMap` in `ExampleConsumer` synchronisiert.
* `CounterStateController` kopiert die Map, um mögliche konkurierende
  Zugriffe während des Erzeugens der Ausgabe zu vermeiden.

12 days agoDie Counter werden mit dem ``String``-Key indiziert
Kai Moritz [Sun, 27 Oct 2024 12:03:25 +0000 (13:03 +0100)]
Die Counter werden mit dem ``String``-Key indiziert

* Vorbereitung auf eine Poison-Pill Übung ist hier noch out-of-scope...

12 days agoDer Consumer zählt, wie oft die Schlüssel auftreten
Kai Moritz [Sun, 27 Oct 2024 11:03:06 +0000 (12:03 +0100)]
Der Consumer zählt, wie oft die Schlüssel auftreten

12 days agoDas Docker-Setup verwendet den `spring-producer` consumer/spring-consumer--2024-11-13--si
Kai Moritz [Sun, 10 Nov 2024 12:50:32 +0000 (13:50 +0100)]
Das Docker-Setup verwendet den `spring-producer`

* Die Konfiguration wurde außerdem so überarbeitet, dass der Producer
  mehr Nachrichten verschickt (ca. 10 Nachrichten pro Sekunde) und diese
  in Batches à ca. 6 Nachrichten verpackt.

13 days agoUngefangene Exceptions im `ExampleConsumer` lösen das Beenden der App aus
Kai Moritz [Sat, 2 Nov 2024 22:19:40 +0000 (23:19 +0100)]
Ungefangene Exceptions im `ExampleConsumer` lösen das Beenden der App aus

13 days agoFix: `close()` muss noch vom `ExampleConsumer` aufgerufen werden
Kai Moritz [Sat, 2 Nov 2024 21:23:16 +0000 (22:23 +0100)]
Fix: `close()` muss noch vom `ExampleConsumer` aufgerufen werden

* Der Aufruf von `close()` löst die Abmeldung der Instanz bei dem
  GroupCoordinator aus.
* Dieser Vorgang sollte noch unter der Kontrolle des Anwendungscodes
  erfolgen!
* Wenn die Methode erst von Spring aufgerufen wird, werden dann ggf. noch
  Seiteneffekte ausgelöst, die dann noch im Kontext der Instanz laufen,
  obwohl diese eigentlich schon beendet wurde!

13 days agoConsumerspezifische Properties werden in eigener nested Class verwaltet
Kai Moritz [Mon, 28 Oct 2024 07:46:58 +0000 (08:46 +0100)]
Consumerspezifische Properties werden in eigener nested Class verwaltet

* Dadurch wird der Code übersichtlicher, wenn spätere Implementierungen
  _sowohl_ als Consumer, _als auch_ als Producer agieren!

13 days ago`ExampleConsumer` in eine Spring-Boot App umgebaut (ohne Spring Kafka)
Kai Moritz [Sun, 27 Oct 2024 21:08:53 +0000 (22:08 +0100)]
`ExampleConsumer` in eine Spring-Boot App umgebaut (ohne Spring Kafka)

13 days agoHandling der Records wie in abgeleiteten Versionen in eigener Methode grundlagen/simple-consumer grundlagen/simple-consumer--2024-11-13--si
Kai Moritz [Sun, 29 Sep 2024 12:30:42 +0000 (14:30 +0200)]
Handling der Records wie in abgeleiteten Versionen in eigener Methode

13 days ago`metadata.maxage.ms` auf 5 Sekunden heruntergesetzt
Kai Moritz [Sat, 28 Sep 2024 10:00:20 +0000 (12:00 +0200)]
`metadata.maxage.ms` auf 5 Sekunden heruntergesetzt

13 days ago`simple-producer` in `simple-consumer` verwandelt -- ALIGN
Kai Moritz [Thu, 26 Sep 2024 13:21:01 +0000 (15:21 +0200)]
`simple-producer` in `simple-consumer` verwandelt -- ALIGN

2 weeks ago`simple-producer` in `simple-consumer` verwandelt -- COPY
Kai Moritz [Mon, 28 Oct 2024 13:14:51 +0000 (14:14 +0100)]
`simple-producer` in `simple-consumer` verwandelt -- COPY

2 weeks ago`metadata.maxage.ms` auf 5 Sekunden heruntergesetzt
Kai Moritz [Sat, 28 Sep 2024 09:58:11 +0000 (11:58 +0200)]
`metadata.maxage.ms` auf 5 Sekunden heruntergesetzt

2 weeks agoBei einem unerwarteten Fehler wird auch der Stacktrace mit ausgegeben grundlagen/simple-producer grundlagen/simple-producer--2024-11-13--si
Kai Moritz [Fri, 1 Nov 2024 14:53:17 +0000 (15:53 +0100)]
Bei einem unerwarteten Fehler wird auch der Stacktrace mit ausgegeben

2 weeks agoDer Nachrichten-Wert wird in allen Log-Meldungen mit ausgegeben
Kai Moritz [Thu, 31 Oct 2024 23:52:44 +0000 (00:52 +0100)]
Der Nachrichten-Wert wird in allen Log-Meldungen mit ausgegeben

2 weeks agoLogging-Pattern überarbeitet
Kai Moritz [Mon, 28 Oct 2024 11:03:50 +0000 (12:03 +0100)]
Logging-Pattern überarbeitet

2 weeks agoUnnötige Kommandos aus der `README.sh` entfernt
Kai Moritz [Sun, 29 Sep 2024 07:44:09 +0000 (09:44 +0200)]
Unnötige Kommandos aus der `README.sh` entfernt

3 weeks ago`docker` in `simple-producer` verwandelt`
Kai Moritz [Sat, 28 Sep 2024 05:49:04 +0000 (07:49 +0200)]
`docker` in `simple-producer` verwandelt`

3 weeks ago`log.retention.check.interval.ms` auf 10 Sekunden gesetzt grundlagen/docker
Kai Moritz [Sat, 26 Oct 2024 17:42:02 +0000 (19:42 +0200)]
`log.retention.check.interval.ms` auf 10 Sekunden gesetzt

7 weeks ago``version``-Eintrag in `docker-compose.yml` entfernt
Kai Moritz [Sat, 28 Sep 2024 09:08:51 +0000 (11:08 +0200)]
``version``-Eintrag in `docker-compose.yml` entfernt

7 weeks ago"Final Newline" in `.editorconfig` gefordert (scheint vim zu entsprechen)
Kai Moritz [Sat, 28 Sep 2024 07:42:36 +0000 (09:42 +0200)]
"Final Newline" in `.editorconfig` gefordert (scheint vim zu entsprechen)

7 weeks ago`.gitignore` und `.editorconfig` hinzugefügt
Kai Moritz [Sat, 28 Sep 2024 06:35:51 +0000 (08:35 +0200)]
`.gitignore` und `.editorconfig` hinzugefügt

7 weeks agoSchreibweise des CLI-Kommandos für Docker-Compose korrigiert
Kai Moritz [Sat, 28 Sep 2024 05:43:48 +0000 (07:43 +0200)]
Schreibweise des CLI-Kommandos für Docker-Compose korrigiert

8 weeks agoUpgrade der verwendeten Kafka-Images auf 7.7.1
Kai Moritz [Wed, 25 Sep 2024 12:26:14 +0000 (14:26 +0200)]
Upgrade der verwendeten Kafka-Images auf 7.7.1

12 months agoZooNavigator in den Demo-Stack aufgenommen
Kai Moritz [Sun, 8 Oct 2023 13:23:57 +0000 (15:23 +0200)]
ZooNavigator in den Demo-Stack aufgenommen

13 months ago`README.sh` bricht ab, wenn `setup` nicht erfolgreich ist!
Kai Moritz [Sat, 14 Oct 2023 17:25:10 +0000 (19:25 +0200)]
`README.sh` bricht ab, wenn `setup` nicht erfolgreich ist!

13 months agoStart von Service `setup` startet auch `cli`
Kai Moritz [Fri, 13 Oct 2023 11:39:45 +0000 (13:39 +0200)]
Start von Service `setup` startet auch `cli`

13 months agoDer Service `setup` wartet bereits auf den Cluster
Kai Moritz [Sat, 14 Oct 2023 16:44:10 +0000 (18:44 +0200)]
Der Service `setup` wartet bereits auf den Cluster

13 months agoGrace-Period für Broker und cli/setup gesetzt
Kai Moritz [Fri, 13 Oct 2023 08:17:23 +0000 (10:17 +0200)]
Grace-Period für Broker und cli/setup gesetzt

13 months agoSchönere YAML-Syntax für `setup`-Service
Kai Moritz [Fri, 6 Oct 2023 17:13:41 +0000 (19:13 +0200)]
Schönere YAML-Syntax für `setup`-Service

13 months agoServices `schema-registry` und `connect` hinzugefügt
Kai Moritz [Fri, 6 Oct 2023 14:28:46 +0000 (16:28 +0200)]
Services `schema-registry` und `connect` hinzugefügt

13 months agoHilfs-Services `setup` überarbeitet
Kai Moritz [Fri, 6 Oct 2023 13:12:37 +0000 (15:12 +0200)]
Hilfs-Services `setup` überarbeitet

13 months agoVolumes für die Log-/Config-Daten und Zookeeper hinzugefügt
Kai Moritz [Mon, 16 Oct 2023 19:13:52 +0000 (21:13 +0200)]
Volumes für die Log-/Config-Daten und Zookeeper hinzugefügt

13 months agoSetup zurück auf Confluent (Version 7.5.1) mit Zookeeper umestellt
Kai Moritz [Mon, 16 Oct 2023 19:05:08 +0000 (21:05 +0200)]
Setup zurück auf Confluent (Version 7.5.1) mit Zookeeper umestellt

17 months agoAKHQ auf einen eindeutigeren Port verlegt grundlagen/docker---2023-06-signal
Kai Moritz [Mon, 12 Jun 2023 19:21:06 +0000 (21:21 +0200)]
AKHQ auf einen eindeutigeren Port verlegt

17 months agoAutomatisches entfernen von Orphans beim Start
Kai Moritz [Sun, 11 Jun 2023 21:14:51 +0000 (23:14 +0200)]
Automatisches entfernen von Orphans beim Start

17 months agoDocker-Setup in das Unterverzeichnis `docker` verschoben
Kai Moritz [Sun, 11 Jun 2023 12:46:07 +0000 (14:46 +0200)]
Docker-Setup in das Unterverzeichnis `docker` verschoben

17 months agoDocker-Setup auf `bitnami/kafka:3.4` aktualisiert und vereinfacht
Kai Moritz [Sun, 11 Jun 2023 11:55:20 +0000 (13:55 +0200)]
Docker-Setup auf `bitnami/kafka:3.4` aktualisiert und vereinfacht

* Die Konfiguration musste an (undokumentierte?!) Änderungen in der
  version 3.4 von `bitnami/kafka` angepasst werden.
* Die drei Broker spielen jetzt gleichzeitig Controller. D.h., der
  Service `kafka-0`, der explizit Controller gespielt hat, fällt weg.

17 months agoBedienbarkeit des Setups verbessert
Kai Moritz [Thu, 8 Jun 2023 08:35:41 +0000 (10:35 +0200)]
Bedienbarkeit des Setups verbessert

* Setup starten mit `docker-compose up -t0 -d cli`
** Dabei wird _nicht_ automatisch das Topic `test` neu angelegt
** D.h., die Daten gehen nicht unbeabsichtigt verloren, wenn man mit
   `up -d` prüft, ob noc alles läuft!
* Das Topic `test` kan mit `docker-compose restart -t0 setup` explizit
  gelöscht und neu angelegt (aka geleert) werden.

23 months ago`docker-compose up setup` startet auch die cli docker--2023-02-signal
Kai Moritz [Thu, 8 Dec 2022 17:38:43 +0000 (18:38 +0100)]
`docker-compose up setup` startet auch die cli

23 months agoAKHQ zu dem Basis-Setup hinzugefügt
Kai Moritz [Thu, 8 Dec 2022 17:37:08 +0000 (18:37 +0100)]
AKHQ zu dem Basis-Setup hinzugefügt

2 years agoCompose-Setup auf bitnami mit KRAFT umgestellt docker--lvm-2-tage--easy-path
Kai Moritz [Mon, 21 Nov 2022 21:58:22 +0000 (22:58 +0100)]
Compose-Setup auf bitnami mit KRAFT umgestellt

* Setup aus Unterschied zu `spring-consumer--json--adder` übernommen.
* Auch das `README.sh` entsprechend angepasst.

2 years agoFür ordering-Übung werden zwei Partitionen benötigt! docker---lvm-2-tage
Kai Moritz [Tue, 26 Jul 2022 17:58:49 +0000 (19:58 +0200)]
Für ordering-Übung werden zwei Partitionen benötigt!

2 years agoSetup mit 3 Broker und Topic-Erzeugung mit Setup für acks-Übung
Kai Moritz [Tue, 26 Jul 2022 17:52:28 +0000 (19:52 +0200)]
Setup mit 3 Broker und Topic-Erzeugung mit Setup für acks-Übung

2 years agoMerge der Upgrades für Confluent/Spring-Boot (Branch 'first-contact')
Kai Moritz [Fri, 22 Jul 2022 18:50:15 +0000 (20:50 +0200)]
Merge der Upgrades für Confluent/Spring-Boot (Branch 'first-contact')

2 years agoUpgrade von Spring Boot und den Confluent-Kafka-Images
Kai Moritz [Fri, 22 Jul 2022 18:04:07 +0000 (20:04 +0200)]
Upgrade von Spring Boot und den Confluent-Kafka-Images

* Upgrade der Kafk-Images von Confluent 7.0.2 auf 7.1.3
** Unterstützt Kafka 3.1.x (siehe https://docs.confluent.io/platform/current/installation/versions-interoperability.html[Versions-Matrix])
* Upgrade für Spring Boot von 2.6.5 auf 2.7.2
** Enthält Kafka: 3.1.1
** Enthält Spring Kafka: 2.8.8

2 years agoSetup aus der Intro-Übung übernommen
Kai Moritz [Sun, 3 Apr 2022 07:26:56 +0000 (09:26 +0200)]
Setup aus der Intro-Übung übernommen

2 years agoSetup "entkernt": Implementierungen entfernt
Kai Moritz [Sun, 3 Apr 2022 07:23:57 +0000 (09:23 +0200)]
Setup "entkernt": Implementierungen entfernt

2 years agoUpgrade der Images von Confluent 6.2.0 auf 7.0.2
Kai Moritz [Sun, 3 Apr 2022 06:15:30 +0000 (08:15 +0200)]
Upgrade der Images von Confluent 6.2.0 auf 7.0.2

2 years agoREADME.sh verwendet den cli-Service für Kommandos
Kai Moritz [Fri, 1 Apr 2022 09:56:34 +0000 (11:56 +0200)]
README.sh verwendet den cli-Service für Kommandos

2 years agoFälschlich hartkodiertes Topic gegen Variable getauscht
Kai Moritz [Fri, 25 Mar 2022 14:27:50 +0000 (15:27 +0100)]
Fälschlich hartkodiertes Topic gegen Variable getauscht

2 years agoCode reorganisiert, um Änderungen vergleichbarer zu machen
Kai Moritz [Fri, 25 Mar 2022 10:19:03 +0000 (11:19 +0100)]
Code reorganisiert, um Änderungen vergleichbarer zu machen

2 years agoUpgrade für Spring Boot 2.6.0 -> 2.6.5
Kai Moritz [Fri, 25 Mar 2022 08:25:54 +0000 (09:25 +0100)]
Upgrade für Spring Boot 2.6.0 -> 2.6.5

* Kafka: 3.0.1
* Spring Kafka: 2.8.4

2 years agoFirst Contact: Simple Producer & Consumer
Kai Moritz [Tue, 14 Dec 2021 17:55:02 +0000 (18:55 +0100)]
First Contact: Simple Producer & Consumer