]> 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, 29 May 2026 20:26:34 +0000 (20:26 +0000)
commit46dff86af6346ca2a44c7b8e13615f83a24d680e
tree2bfe449640a824956ee5445147e767020f280f96
parentc3235491223b84e4538c890526880fe916ca7148
`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]