* Durch den Aufruf der blockierenden Methode `get()` wurde erzwungen, das
der Versand einer Nachricht von Kafka bestätigt wurde, bevor die
nächste Nachricht an Kafka übergeben werden konnte.
* Der blockierende Aufruf wurde jetzt in eine getrennte asynchrone
Verarbeitung (in dem Default-Thread-Pool) verschoben.
* Dadurch können jetzt mehrere für den Versand bereitgestellte Nachrichten
hintereinander an Kafka übergeben werden.
* _Beachte:_ Der Effekt wird erst dann wirklich deutlich, wenn das
Throttling über `Thread.sleep(500)` deaktiviert wird!
* _Beachte:_ Da die Verarbeitung der Rückmeldung von Kafka über den
Default-Thread-Pool erfolgt, erfolgt die Erzeugung der Log-Ausgaben
asynchron in verschiedenen Threads. D.h., die Log-Meldungen werden
_nicht_ in der Reihenfolge ausgegeben, in der die Nachrichten versendet
wurden, was auf den ersten Blick sehr verwirrend ist!
Kai Moritz [Sun, 15 Mar 2026 10:48:08 +0000 (11:48 +0100)]
Fehler korrigiert: Shutdown wartet auf Versand der wartenden Nachrichten
* Über die Verwendung einer Semaphore wird sichergestellt, dass alle
für das Queuing übergebenen Nachrichten auch an Kafka übergeben werden,
bevor `KafkaProducer.close()` aufgerufen wird
* Ansonsten wurden geschedulte Nachrichten teilweise erst an den Producer
übergeben, nachdem dieser bereits geschlossen wurde, so dass es zu
Fehlern gekommen ist.
Kai Moritz [Sun, 15 Mar 2026 09:00:49 +0000 (10:00 +0100)]
Limits für die Definition des Service `producer` ergänzt
* Dadurch wird die Gefahr eingegrenzt, dass der Arbeitsplatz eines TN
überlastet wird.
* Dies ist einigen TN passiert, weil sie den `ExampleProducer` ohne
`Thread.sleep(500)` als Image gebaut haben.
* Wenn dieser dann unbedacht im Hintergrund weiterläuft, kann das den
Rechner schnell lahm legen...
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