Springify: Kernfunktion von EndlessConsumer über Spring-Kafka
authorKai Moritz <kai@juplo.de>
Tue, 12 Apr 2022 22:38:24 +0000 (00:38 +0200)
committerKai Moritz <kai@juplo.de>
Fri, 15 Apr 2022 08:29:52 +0000 (10:29 +0200)
commita9200a876060edc8683dfd6d0d16c23407c189ad
tree68c448510536848dcd5135a52d616b76c2b92e08
parent4a6907ee4675c3d9bc7fd4ba31a7048527f53a50
Springify: Kernfunktion von EndlessConsumer über Spring-Kafka

* Alle weiteren Funktionen für dieses erste Experiment erst mal entfernt
* Testfall entsprechend angepasst
* Der Commit passiert hier, weil Spring Kafka per Default den eignen
  Commit-Modus `BATCH` aktiviert, der nach jedem abgearbeiteten `poll()`
  einen (synchronen!) Commit durchführt
* Der Test ist zwar grün, wenn man die App normal startet, verfängt sie
  sich jedoch in einer Endlosschleife, da kein Error-Handler konfiguriert
  ist, der die `RecordDeserializationException` korrekt behandeln kann, so
  dass sich die App in einem Life-Deadlock befindet, in dem sie immer
  wieder den Datensatz erhält, der den Fehler ausgelöst hat, dadurch
  aber nicht wie ein Vanilla-Consumer beendet wird, da Spring Kafka die
  Exception abfängt und weitermacht: neuer `poll()` für die selbe Position,
  so dass die App aus Sicht des GroupCoordinator noch lebt.
* DEBUG-Logging für `org.springframework.kafka` aktiviert, damit man die
  Commits sieht.
pom.xml
src/main/java/de/juplo/kafka/Application.java
src/main/java/de/juplo/kafka/ApplicationConfiguration.java
src/main/java/de/juplo/kafka/ApplicationHealthIndicator.java
src/main/java/de/juplo/kafka/DriverController.java
src/main/java/de/juplo/kafka/EndlessConsumer.java
src/main/resources/application.yml
src/main/resources/logback.xml
src/test/java/de/juplo/kafka/ApplicationTests.java