Kai Moritz [Mon, 14 Apr 2025 20:13:57 +0000 (22:13 +0200)]
Version des `spring-consumer` mit einer vollständigen Fehlerbehandlung
* Exceptions & Konfig für wiederholbare und nicht wiederholbare Fehler
* RED: Erwartetes Verhalten für die Fehlerbehandlung definiert
* GREEN: Erweitertes Error-Handling implementiert
* Timout für den Poll-Request konfigurierbar gemacht
* Timings für den `ExampleConsumerTest` enger gezogen
* Keine Verzögerung für Fehler in den Retry-Tests
* Zusätzliche Logging-Meldung für Retry-Ablauf
* Nicht ausgewertete Unterscheidung entfernt
* Erzeugung des `ExampleConsumer` im Tests über Methode konfigurierbar
* GREEN: Erwartetes Verhalten für unterschiedliche Delays definiert
* Slack für Poll-Intervall ist explizit konfigurierbar
* Test für Retries mit fixem Back-Off in `ExampleConsumerTest` ergänzt
* Der Offset eines inaktiven `BackOffState` sollte ein ungültiger Wert sein
* Innere Klasse `BackOffState` statisch gemacht
* Innere Klasse `BackOffState` extrahiert
* Logging in `BackOffState` verbessert
* Eindeutigere Methodennamen in `BackOffState`
* RED - Unit-Test für `BackOffState` implementiert
* GREEN - Fehler in der Initialisierung von `BackOffState` korrigiert
* Doppelten Code in `BackOffStateTest` in Methoden ausgelagert
* Mocking mit `@Mock` auf Klassenebene erspart Parameter-Schlacht
* Aussagelose Tests aus `BackOffStateTest` entfernt
* BackOff-Zeit in `BackOffStateTest` in statische Variable ausgelagert
* Logging-Meldung des `BackOffState` vereinfacht und verbessert
* RED: Korrigiertes Verhalten für `BackOffState` definiert
* GREEN: Implementierung von `BackOffState` korrigiert
* Umstellung des `ExampleConsumerTest` auf AssertJ
* `fetch.max.wait` konfigurierbar gemacht
* Test für viele Fehler in einer Partition in `BackOffStateTest` ergänzt
* Überprüfung des ``BackOffState``-Zustands berücksichtigt immer den Offset
* Bedingungsloser Reset (und besserer Methoden-Name) für `BackOffState`
* `BackOffState` wird nur 1x erzeugt und danach zurückgesetzt und gestartet
* Überflüssiges Attribut in `BackOffState` entfernt
Neu:
* Test für unterschiedliche Nachrichten-Typen vorbereitet.
Kai Moritz [Sun, 13 Apr 2025 09:23:19 +0000 (11:23 +0200)]
Error-Handling für Deserialisierungs-Fehler implementiert und getestet
* Anwendung bereits entsprechend des Ziels umbenannt.
* Hier erst mal nur die Fehlerbehandlung für Deserialisierungs-Fehler, so
wie in den Übungen dazu.
* Der Testfall ist schon auf die deutlich komplexeren Tests für die
vollständige Fehlerbehandlung vorbereitet.
Kai Moritz [Sat, 12 Apr 2025 09:56:07 +0000 (11:56 +0200)]
Das Docker-Setup verwendet den `juplo/simple-producer:1.0-SNAPSHOT`
* Zu dem Zeitpunkt, zu dem der `juplo/simple-consumer:1.0-SNAPSHOT` in
dem Live-Coding in den `juplo/spring-consumer:1.1-SNAPSHOT` umgebaut
wird, existiert der `juplo/spring-producer:2.0-SNAPSHOT` noch nicht!
Kai Moritz [Sun, 27 Oct 2024 21:08:53 +0000 (22:08 +0100)]
`ExampleConsumer` in eine Spring-Boot App umgebaut (ohne Spring Kafka)
* 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!
* 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!
* Ungefangene Exceptions im `ExampleConsumer` lösen das Beenden der App aus
* 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.
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.
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.
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