From: Kai Moritz Date: Thu, 20 Feb 2025 17:36:13 +0000 (+0100) Subject: `ExampleConsumer` über Generics typisiert X-Git-Tag: consumer/spring-consumer--generics--2025-04-signal-spickzettel~1 X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=691145a372b8e9d990ee244ce441cc84bff339ef;p=demos%2Fkafka%2Ftraining `ExampleConsumer` über Generics typisiert --- diff --git a/README.sh b/README.sh index b46e235..a7cbb89 100755 --- a/README.sh +++ b/README.sh @@ -1,6 +1,6 @@ #!/bin/bash -IMAGE=juplo/spring-consumer:1.1-SNAPSHOT +IMAGE=juplo/spring-consumer:1.1-generics-SNAPSHOT if [ "$1" = "cleanup" ] then diff --git a/build.gradle b/build.gradle index a8614fd..7e70329 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'de.juplo.kafka' -version = '1.1-SNAPSHOT' +version = '1.1-generics-SNAPSHOT' java { toolchain { diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 9984f6b..5d1fa46 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -140,21 +140,21 @@ services: command: kafka:9092 test producer consumer: - image: juplo/spring-consumer:1.1-SNAPSHOT + image: juplo/spring-consumer:1.1-generics-SNAPSHOT environment: juplo.bootstrap-server: kafka:9092 juplo.client-id: consumer juplo.consumer.topic: test peter: - image: juplo/spring-consumer:1.1-SNAPSHOT + image: juplo/spring-consumer:1.1-generics-SNAPSHOT environment: juplo.bootstrap-server: kafka:9092 juplo.client-id: peter juplo.consumer.topic: test ute: - image: juplo/spring-consumer:1.1-SNAPSHOT + image: juplo/spring-consumer:1.1-generics-SNAPSHOT environment: juplo.bootstrap-server: kafka:9092 juplo.client-id: ute diff --git a/pom.xml b/pom.xml index dd96d00..88730f1 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ spring-consumer Spring Consumer Super Simple Consumer-Group, that is implemented as Spring-Boot application and configured by Spring Kafka - 1.1-SNAPSHOT + 1.1-generics-SNAPSHOT 21 diff --git a/src/main/java/de/juplo/kafka/ApplicationConfiguration.java b/src/main/java/de/juplo/kafka/ApplicationConfiguration.java index ea6b64e..c525b11 100644 --- a/src/main/java/de/juplo/kafka/ApplicationConfiguration.java +++ b/src/main/java/de/juplo/kafka/ApplicationConfiguration.java @@ -16,13 +16,13 @@ import java.util.Properties; public class ApplicationConfiguration { @Bean - public ExampleConsumer exampleConsumer( + public ExampleConsumer exampleConsumer( Consumer kafkaConsumer, ApplicationProperties properties, ConfigurableApplicationContext applicationContext) { return - new ExampleConsumer( + new ExampleConsumer<>( properties.getClientId(), properties.getConsumerProperties().getTopic(), kafkaConsumer, diff --git a/src/main/java/de/juplo/kafka/ExampleConsumer.java b/src/main/java/de/juplo/kafka/ExampleConsumer.java index 1f5a570..101abd1 100644 --- a/src/main/java/de/juplo/kafka/ExampleConsumer.java +++ b/src/main/java/de/juplo/kafka/ExampleConsumer.java @@ -11,11 +11,11 @@ import java.util.Arrays; @Slf4j -public class ExampleConsumer implements Runnable +public class ExampleConsumer implements Runnable { private final String id; private final String topic; - private final Consumer consumer; + private final Consumer consumer; private final Thread workerThread; private final Runnable closeCallback; @@ -25,7 +25,7 @@ public class ExampleConsumer implements Runnable public ExampleConsumer( String clientId, String topic, - Consumer consumer, + Consumer consumer, Runnable closeCallback) { this.id = clientId; @@ -49,10 +49,10 @@ public class ExampleConsumer implements Runnable while (true) { - ConsumerRecords records = consumer.poll(Duration.ofSeconds(1)); + 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(), @@ -86,8 +86,8 @@ public class ExampleConsumer implements Runnable String topic, Integer partition, Long offset, - String key, - String value) + K key, + V value) { consumed++; log.info("{} - partition={}-{}, offset={}: {}={}", id, topic, partition, offset, key, value);