GRÜN: Korrektur des über die verschärften Tests aufgedeckten Fehlers
[demos/kafka/training] / src / main / java / de / juplo / kafka / AdderRebalanceListener.java
index 284aff5..7526929 100644 (file)
@@ -24,6 +24,7 @@ public class AdderRebalanceListener implements PollIntervalAwareConsumerRebalanc
   private final Consumer<String, String> consumer;
 
   private Instant lastCommit = Instant.EPOCH;
+  private boolean commitsEnabled = true;
 
   @Override
   public void onPartitionsAssigned(Collection<TopicPartition> partitions)
@@ -59,7 +60,14 @@ public class AdderRebalanceListener implements PollIntervalAwareConsumerRebalanc
           id,
           partition,
           newOffset);
-      repository.save(new StateDocument(partition, handler.removePartition(partition), newOffset));
+      if (commitsEnabled)
+      {
+        repository.save(new StateDocument(partition, handler.removePartition(partition), newOffset));
+      }
+      else
+      {
+        log.info("Offset commits are disabled! Last commit: {}", lastCommit);
+      }
     });
   }
 
@@ -67,6 +75,12 @@ public class AdderRebalanceListener implements PollIntervalAwareConsumerRebalanc
   @Override
   public void beforeNextPoll()
   {
+    if (!commitsEnabled)
+    {
+      log.info("Offset commits are disabled! Last commit: {}", lastCommit);
+      return;
+    }
+
     if (lastCommit.plus(commitInterval).isBefore(clock.instant()))
     {
       log.debug("Storing data and offsets, last commit: {}", lastCommit);
@@ -78,4 +92,16 @@ public class AdderRebalanceListener implements PollIntervalAwareConsumerRebalanc
       lastCommit = clock.instant();
     }
   }
+
+  @Override
+  public void enableCommits()
+  {
+    commitsEnabled = true;
+  }
+
+  @Override
+  public void disableCommits()
+  {
+    commitsEnabled = false;
+  }
 }