X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FApplicationRebalanceListener.java;h=d31929519e61a4a6fc18f84e4590a7295f757c4f;hb=384ed293b9d6d71f68031f92bd7bf60670a7ba4b;hp=fad3287155433e696c616b248548e318864756a3;hpb=5bf8218d4a79a3b55056bffb2ed0c91c6bec8917;p=demos%2Fkafka%2Ftraining diff --git a/src/main/java/de/juplo/kafka/ApplicationRebalanceListener.java b/src/main/java/de/juplo/kafka/ApplicationRebalanceListener.java index fad3287..d319295 100644 --- a/src/main/java/de/juplo/kafka/ApplicationRebalanceListener.java +++ b/src/main/java/de/juplo/kafka/ApplicationRebalanceListener.java @@ -3,7 +3,6 @@ package de.juplo.kafka; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.Consumer; -import org.apache.kafka.clients.consumer.ConsumerRebalanceListener; import org.apache.kafka.common.TopicPartition; import java.util.*; @@ -11,16 +10,18 @@ import java.util.*; @RequiredArgsConstructor @Slf4j -public class ApplicationRebalanceListener implements ConsumerRebalanceListener +public class ApplicationRebalanceListener implements CommittingConsumerRebalanceListener { - private final Consumer consumer; private final ApplicationRecordHandler recordHandler; private final AdderResults adderResults; private final StateRepository stateRepository; private final String id; + private final Consumer consumer; private final Set partitions = new HashSet<>(); + private boolean commitsEnabled = true; + @Override public void onPartitionsAssigned(Collection partitions) { @@ -50,8 +51,18 @@ public class ApplicationRebalanceListener implements ConsumerRebalanceListener @Override public void onPartitionsRevoked(Collection partitions) { - log.info("{} - Commiting offsets for all previously assigned partitions", id); - consumer.commitSync(); + if (commitsEnabled) + { + log.info("{} - Commiting offsets for all previously assigned partitions", id); + try + { + consumer.commitSync(); + } + catch (Exception e) + { + log.warn("{} - Could not commit offsets in onPartitionsRevoked():", id, e); + } + } partitions.forEach(tp -> { @@ -72,4 +83,16 @@ public class ApplicationRebalanceListener implements ConsumerRebalanceListener stateRepository.save(new StateDocument(partition, state, results)); }); } + + @Override + public void enableCommits() + { + commitsEnabled = true; + } + + @Override + public void disableCommits() + { + commitsEnabled = false; + } }