]> 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@juplo.de>
Sun, 22 Mar 2026 15:19:11 +0000 (16:19 +0100)
commit3419f4b8856ee6bf480950d56c74638249740dff
treeb4615ad07ced250f15adbc29cc07175b9fce421b
parentc9f081e3685a1be549a4f68cec90e5ba50df03e0
`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
15 files changed:
.dockerignore
.maven-dockerinclude
Dockerfile
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]