From: Kai Moritz Date: Sat, 17 Sep 2022 08:31:17 +0000 (+0200) Subject: README X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=1f1af94bd138b01b6dbd1d5bb164b4f3bb106e67;p=demos%2Fkafka%2Ftraining README * Geht nicht (effizient), weil: Damit keine Nachrichten verloren gehen, muss der Zustand _mindestens_ vor jedem `poll()` -- genauer: vor jedem Commit -- gesichert werden. * Mögliche, aber nur mäßig effizient und/oder komplexe Lösungen: ** Mit AckMode.MANUAL könnten immer erst nach einem Speichern des Zustands die zugehörigen Nachrichten bestätigt werden. ** Dann wäre sichergestellt, dass die bestätigte Offset-Position nie weiter in der Zukunft liegt, als die bereits verarbeiteten und als neuer Zustand gesicherten Nachrichten. ** Eine weitere billige und extrem uneffiziente Möglichkeit wäre, den Zustand nach _jeder_ verarbeiten Nachricht zu speichern! * *Vielleicht doch sinnvoll möglich*, aber nur mit bei Batch-Verarbeitung * Dort könnte dann eingentlich wie in der Implementierung für Apache Kafka einfach nach jedem verarbeiteten Batch ein Commit durchgeführt werden. * *Außerdem:* Wenn die Daten eh je Record einzeln in einer DB gespeichert werden, spricht nichts dagegen, mit jedem Datensatz auch den Offset zu speichern! (Es wird dann lediglich die Ermittlung des letzten Offsets ein bischen komplizierter...) ---