]> juplo.de Git - demos/kafka/training/commit
`ExampleProducer` in eine Spring-Boot App umgebaut (ohne Spring Kafka)
authorKai Moritz <kai@juplo.de>
Wed, 12 Mar 2025 05:53:08 +0000 (06:53 +0100)
committerKai Moritz <kai.milan.moritz@googlemail.com>
Fri, 12 Jun 2026 17:17:33 +0000 (19:17 +0200)
commitacea8567395078d06ea87ae4b4daf4171840cb11
treea510647f37fd46a5e525e864a3049f3e6eb72a33
parentb07188ea9af55bea4a1e241623eeef848d27fb55
`ExampleProducer` in eine Spring-Boot App umgebaut (ohne Spring Kafka)

* Validierung der Properties aktiviert
* Steuerung und Abfrage über die Actuator-REST-API von ermöglicht
* Namespace für Konfig von `producer` in `juplo.producer` geändert
* In der Configuration wird das Interface des `KafkaProducer` übergeben
* Producerspezifische Properties werden in eigener nested Class verwaltet
** Dadurch wird der Code übersichtlicher, wenn spätere Implementierungen
   _sowohl_ als Consumer, _als auch_ als Producer agieren!
* Das Throttling kann über `juplo.producer.throttle-ms` gesteuert werden
* `delivery.timeout.ms` und `request.timeout.ms` noch weiter gesenkt
* `max.block.ms` auf 5s gesetzt
** Sonst entsteht bei verschiedenen Fehlern schnell ein falscher Eindruck
** Man könnte sonst auf die Idee kommen, dass der Producer für diese
   beliebig lange wartet!
* Eine Exception im Producer löst das Beenden der App aus
* Fix: `close()` muss noch vom `ExampleProducer` aufgerufen werden
** Der Aufruf von `close()` löst das Versenden wartender Nachrichten aus.
** Wenn die Methode erst von Spring aufgerufen wird, werden ggf. noch
   Nachrichten konsumiert, nachdem der `ExampleProducer` bereits
   ausgegeben hat, wieviele Nachrichten er insgesamt verarbeitet hat.
* `delivery.timeout.ms` konfigurierbar gemacht
* `max.block.ms` konfigurierbar gemacht
* `buffer.memory` konfigurierbar gemacht
12 files changed:
README.sh
build.gradle
docker/docker-compose.yml
pom.xml
settings.gradle
src/main/java/de/juplo/kafka/Application.java [new file with mode: 0644]
src/main/java/de/juplo/kafka/ApplicationConfiguration.java [new file with mode: 0644]
src/main/java/de/juplo/kafka/ApplicationProperties.java [new file with mode: 0644]
src/main/java/de/juplo/kafka/ExampleProducer.java
src/main/resources/application.yml [new file with mode: 0644]
src/main/resources/logback.xml
src/test/java/de/juplo/kafka/ApplicationTests.java [new file with mode: 0644]