X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FSimpleConsumer.java;h=45f9b942b520dba70f49a289dbf71dad97aa18b6;hb=39e2fe39ffbeba4fe7cae5e9d1786e51c12714d6;hp=1cf9b22595100a3a32cbe620437b6cd809a05b32;hpb=8f14291a52872141ded7ecead6b1f7f9fbc969e4;p=demos%2Fkafka%2Ftraining diff --git a/src/main/java/de/juplo/kafka/SimpleConsumer.java b/src/main/java/de/juplo/kafka/SimpleConsumer.java index 1cf9b22..45f9b94 100644 --- a/src/main/java/de/juplo/kafka/SimpleConsumer.java +++ b/src/main/java/de/juplo/kafka/SimpleConsumer.java @@ -9,21 +9,22 @@ import org.apache.kafka.common.errors.WakeupException; import java.time.Duration; import java.util.Arrays; +import java.util.concurrent.Callable; @Slf4j @RequiredArgsConstructor -public class SimpleConsumer implements Runnable +public class SimpleConsumer implements Callable { private final String id; private final String topic; - private final Consumer consumer; + private final Consumer consumer; private long consumed = 0; @Override - public void run() + public Integer call() { try { @@ -32,11 +33,11 @@ public class SimpleConsumer implements Runnable while (true) { - ConsumerRecords records = + ConsumerRecords records = consumer.poll(Duration.ofSeconds(1)); log.info("{} - Received {} messages", id, records.count()); - for (ConsumerRecord record : records) + for (ConsumerRecord record : records) { handleRecord( record.topic(), @@ -50,11 +51,13 @@ public class SimpleConsumer implements Runnable catch(WakeupException e) { log.info("{} - Consumer was signaled to finish its work", id); + return 0; } catch(Exception e) { log.error("{} - Unexpected error: {}, unsubscribing!", id, e.toString()); consumer.unsubscribe(); + return 1; } finally { @@ -69,7 +72,7 @@ public class SimpleConsumer implements Runnable Integer partition, Long offset, String key, - String value) + Message value) { consumed++; log.info("{} - {}: {}/{} - {}={}", id, offset, topic, partition, key, value);