From: Kai Moritz Date: Sun, 24 Jul 2022 14:12:04 +0000 (+0200) Subject: Fehler in Logging-Ausgabe korrigiert X-Git-Tag: endless-stream-consumer-DEPRECATED^2^2^2~1^2~11 X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=5b4d66eaf6cac9261ab5c36174a16b04c62adf30;p=demos%2Fkafka%2Ftraining Fehler in Logging-Ausgabe korrigiert * Der über den Merge hinzugefügt Test hat einen Fehler aufgedeckt. * In onPartitionsRevoked() wurde bei der Berechnung der verarbeiteten Nachrichten für die Log-Ausgabe ein Nullzeiger dereferenziert. * Ursache dafür war, dass die Map `offsets` in der Version, die die Offsets speichert gar nicht mehr gepflegt wurde. --- diff --git a/src/main/java/de/juplo/kafka/EndlessConsumer.java b/src/main/java/de/juplo/kafka/EndlessConsumer.java index 2a3445c..6e460b4 100644 --- a/src/main/java/de/juplo/kafka/EndlessConsumer.java +++ b/src/main/java/de/juplo/kafka/EndlessConsumer.java @@ -35,7 +35,7 @@ public class EndlessConsumer implements ConsumerRebalanceListener, Runnabl private long consumed = 0; private final Map> seen = new HashMap<>(); - private final Map offsets = new HashMap<>(); + private final Map lastOffsets = new HashMap<>(); @Override @@ -45,7 +45,7 @@ public class EndlessConsumer implements ConsumerRebalanceListener, Runnabl { Integer partition = tp.partition(); Long newOffset = consumer.position(tp); - Long oldOffset = offsets.remove(partition); + Long oldOffset = lastOffsets.remove(partition); log.info( "{} - removing partition: {}, consumed {} records (offset {} -> {})", id, @@ -80,6 +80,7 @@ public class EndlessConsumer implements ConsumerRebalanceListener, Runnabl .findById(Integer.toString(partition)) .orElse(new StatisticsDocument(partition)); consumer.seek(tp, document.offset); + lastOffsets.put(partition, document.offset); seen.put(partition, document.statistics); }); }