demos/kafka/training
2 weeks agoDer Zählerzustand wird separat pro Partition verwaltet
Kai Moritz [Sat, 2 Nov 2024 15:54:01 +0000 (16:54 +0100)]
Der Zählerzustand wird separat pro Partition verwaltet

* Dadurch ist es möglich, den Zustand für entzogene Partitionen zu löschen.
* D.h., bei der Ausgabe ist immer klar ersichtlich, über welchen Zustand
  die angefragte Instanz gerade verfügt.

2 weeks agoWIP:setup
Kai Moritz [Sat, 2 Nov 2024 15:26:28 +0000 (16:26 +0100)]
WIP:setup

2 weeks agoWIP:setup
Kai Moritz [Sat, 2 Nov 2024 09:24:24 +0000 (10:24 +0100)]
WIP:setup

2 weeks 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.

2 weeks 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

2 weeks 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

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

2 weeks 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

2 weeks 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

2 weeks 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

2 weeks 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

2 weeks 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.

2 weeks 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!

2 weeks 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

2 weeks 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

2 weeks 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

2 weeks 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

2 weeks agoSetup auf den Producer aus `producer/spring-producer` umgestellt
Kai Moritz [Mon, 28 Oct 2024 09:12:15 +0000 (10:12 +0100)]
Setup auf den Producer aus `producer/spring-producer` umgestellt

2 weeks 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.

3 weeks 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.

3 weeks 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.

3 weeks 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.

3 weeks 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...

3 weeks 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

3 weeks 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!

3 weeks 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)

3 weeks agoHandling der Records wie in abgeleiteten Versionen in eigener Methode
Kai Moritz [Sun, 29 Sep 2024 12:30:42 +0000 (14:30 +0200)]
Handling der Records wie in abgeleiteten Versionen in eigener Methode

3 weeks 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

3 weeks 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

3 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

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

3 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`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

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