X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FApplicationRebalanceListener.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FApplicationRebalanceListener.java;h=d31929519e61a4a6fc18f84e4590a7295f757c4f;hb=384ed293b9d6d71f68031f92bd7bf60670a7ba4b;hp=eef0d00d73e07f8eda6053d3334498f439e6f7d7;hpb=4210993f369acfa07ae8d388eb8e32517005de6f;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 eef0d00..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,7 +10,7 @@ import java.util.*; @RequiredArgsConstructor @Slf4j -public class ApplicationRebalanceListener implements ConsumerRebalanceListener +public class ApplicationRebalanceListener implements CommittingConsumerRebalanceListener { private final ApplicationRecordHandler recordHandler; private final AdderResults adderResults; @@ -21,6 +20,8 @@ public class ApplicationRebalanceListener implements ConsumerRebalanceListener private final Set partitions = new HashSet<>(); + private boolean commitsEnabled = true; + @Override public void onPartitionsAssigned(Collection partitions) { @@ -50,14 +51,17 @@ public class ApplicationRebalanceListener implements ConsumerRebalanceListener @Override public void onPartitionsRevoked(Collection partitions) { - log.info("{} - Commiting offsets for all previously assigned partitions", id); - try - { - consumer.commitSync(); - } - catch (Exception e) + if (commitsEnabled) { - log.warn("{} - Could not commit offsets in onPartitionsRevoked():", id, e); + 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 -> @@ -79,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; + } }