Kai Moritz [Sat, 11 Jan 2025 16:10:02 +0000 (17:10 +0100)]
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
Kai Moritz [Fri, 21 Feb 2025 14:56:46 +0000 (15:56 +0100)]
Handling der Nachricht in das Interface `RecordHandler` verlegt
* Tests für das Verhalten im Fehlerfall
* Der Payload einer Nachricht wird über alle Nachrichten hochgezählt
* Konfiguration über `ApplicationConiguration` - aber von Hand
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