From b6a9e9e23751fb58beef21f1166b57c6a3fb6ffb Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Tue, 29 Oct 2024 14:05:40 +0100 Subject: [PATCH] Setup, um `grundlagen/simple-consumer` als Consumer Group zu skalieren --- .dockerignore | 4 - .maven-dockerexclude | 1 - .maven-dockerinclude | 2 - Dockerfile | 6 - build.gradle | 67 ---------- docker/docker-compose.yml | 8 ++ pom.xml | 99 --------------- settings.gradle | 1 - .../java/de/juplo/kafka/ExampleConsumer.java | 119 ------------------ src/main/resources/logback.xml | 16 --- 10 files changed, 8 insertions(+), 315 deletions(-) delete mode 100644 .dockerignore delete mode 100644 .maven-dockerexclude delete mode 100644 .maven-dockerinclude delete mode 100644 Dockerfile delete mode 100644 build.gradle delete mode 100644 pom.xml delete mode 100644 settings.gradle delete mode 100644 src/main/java/de/juplo/kafka/ExampleConsumer.java delete mode 100644 src/main/resources/logback.xml diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 9127d15f..00000000 --- a/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -* -!Dockerfile -!target/*.jar -!target/libs/*.jar diff --git a/.maven-dockerexclude b/.maven-dockerexclude deleted file mode 100644 index 72e8ffc0..00000000 --- a/.maven-dockerexclude +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/.maven-dockerinclude b/.maven-dockerinclude deleted file mode 100644 index a00c65ff..00000000 --- a/.maven-dockerinclude +++ /dev/null @@ -1,2 +0,0 @@ -target/*.jar -target/libs/*.jar diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 22819afe..00000000 --- a/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM eclipse-temurin:21-jre -VOLUME /tmp -COPY target/*.jar /opt/app.jar -COPY target/libs /opt/libs -ENTRYPOINT [ "java", "-jar", "/opt/app.jar" ] -CMD [ "kafka:9092", "test", "my-group", "DCKR" ] diff --git a/build.gradle b/build.gradle deleted file mode 100644 index be0bc470..00000000 --- a/build.gradle +++ /dev/null @@ -1,67 +0,0 @@ -import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage - -plugins { - id 'java' - id 'org.springframework.boot' version '3.4.1' - id 'io.spring.dependency-management' version '1.1.7' - id 'com.bmuschko.docker-remote-api' version '9.3.3' -} - -group = 'de.juplo.kafka' -version = '1.0-SNAPSHOT' - -java { - toolchain { - languageVersion = JavaLanguageVersion.of(21) - } -} - -configurations { - compileOnly { - extendsFrom annotationProcessor - } -} - -repositories { - mavenCentral() -} - -dependencies { - implementation 'org.apache.kafka:kafka-clients' - implementation 'ch.qos.logback:logback-classic' - compileOnly 'org.projectlombok:lombok' - annotationProcessor 'org.projectlombok:lombok' -} - -docker { - // Optional: Konfiguriere den Docker-Host, falls nötig - // url = 'unix:///var/run/docker.sock' (Standard) -} - - -def targetDir = file("${projectDir}/target") -def appJarName = "${project.name}-${project.version}.jar" - -// Task zum Bereinigen des `target`-Verzeichnisses bei `clean` -clean { - delete targetDir -} - -// Task zum Kopieren des Haupt-JARs -task copyJar(type: Copy) { - from "$buildDir/libs/${appJarName}" - into targetDir - dependsOn build - - doFirst { - def libs = file("${targetDir}/libs") - mkdir(libs) - } -} - -// Docker-Task -task buildDockerImage(type: DockerBuildImage) { - inputDir = file('.') - images = ["juplo/${project.name}:${project.version}"] - dependsOn copyJar -} diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 95539006..18c80476 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -143,6 +143,14 @@ services: image: juplo/simple-consumer:1.0-SNAPSHOT command: kafka:9092 test my-group consumer + peter: + image: juplo/simple-consumer:1.0-SNAPSHOT + command: kafka:9092 test my-group peter + + ute: + image: juplo/simple-consumer:1.0-SNAPSHOT + command: kafka:9092 test my-group ute + volumes: zookeeper-data: zookeeper-log: diff --git a/pom.xml b/pom.xml deleted file mode 100644 index a1007175..00000000 --- a/pom.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - 4.0.0 - - - org.springframework.boot - spring-boot-starter-parent - 3.4.1 - - - - de.juplo.kafka - simple-consumer - Simple Consumer-Group - Super Simple Consumer-Group, that is implemented as a plain Java-program - 1.0-SNAPSHOT - - - 21 - - - - - org.apache.kafka - kafka-clients - - - org.projectlombok - lombok - compile - - - ch.qos.logback - logback-classic - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-dependencies - package - - copy-dependencies - - - ${project.build.directory}/libs - - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - true - libs/ - de.juplo.kafka.ExampleConsumer - - - - - - pl.project13.maven - git-commit-id-plugin - - - io.fabric8 - docker-maven-plugin - 0.45.0 - - - - juplo/%a:%v - - - - - - build - package - - build - - - - - - - - diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 71fb5737..00000000 --- a/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'simple-consumer' diff --git a/src/main/java/de/juplo/kafka/ExampleConsumer.java b/src/main/java/de/juplo/kafka/ExampleConsumer.java deleted file mode 100644 index 15d72ad7..00000000 --- a/src/main/java/de/juplo/kafka/ExampleConsumer.java +++ /dev/null @@ -1,119 +0,0 @@ -package de.juplo.kafka; - -import lombok.extern.slf4j.Slf4j; -import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.apache.kafka.clients.consumer.ConsumerRecords; -import org.apache.kafka.clients.consumer.Consumer; -import org.apache.kafka.clients.consumer.KafkaConsumer; -import org.apache.kafka.common.errors.WakeupException; -import org.apache.kafka.common.serialization.StringDeserializer; - -import java.time.Duration; -import java.util.Arrays; -import java.util.Properties; - - -@Slf4j -public class ExampleConsumer -{ - private final String id; - private final String topic; - private final Consumer consumer; - - private volatile boolean running = false; - private long consumed = 0; - - public ExampleConsumer( - String broker, - String topic, - String groupId, - String clientId) - { - Properties props = new Properties(); - // Konfiguration für den Consumer zusammenstellen - - this.id = clientId; - this.topic = topic; - consumer = new KafkaConsumer<>(props); - } - - - public void run() - { - try - { - log.info("{} - Subscribing to topic {}", id, topic); - // TODO: subscribe! - running = true; - - while (true) - { - // TODO: - // Über consumer.poll() Nachrichten abrufen und loggen - } - } - catch(WakeupException e) - { - log.info("{} - Consumer was signaled to finish its work", id); - } - catch(Exception e) - { - log.error("{} - Unexpected error, unsubscribing!", id, e); - } - finally - { - running = false; - log.info("{} - Closing the KafkaConsumer", id); - consumer.close(); - log.info("{}: Consumed {} messages in total, exiting!", id, consumed); - } - } - - - public static void main(String[] args) throws Exception - { - String broker = ":9092"; - String topic = "test"; - String groupId = "my-group"; - String clientId = "DEV"; - - switch (args.length) - { - case 4: - clientId = args[3]; - case 3: - groupId = args[2]; - case 2: - topic = args[1]; - case 1: - broker = args[0]; - } - - - ExampleConsumer instance = new ExampleConsumer(broker, topic, groupId, clientId); - - Runtime.getRuntime().addShutdownHook(new Thread(() -> - { - instance.consumer.wakeup(); - - while (instance.running) - { - log.info("Waiting for main-thread..."); - try - { - Thread.sleep(1000); - } - catch (InterruptedException e) {} - } - log.info("Shutdown completed."); - })); - - log.info( - "Running ExampleConsumer: broker={}, topic={}, group-id={}, client-id={}", - broker, - topic, - groupId, - clientId); - instance.run(); - } -} diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml deleted file mode 100644 index 7a25e76f..00000000 --- a/src/main/resources/logback.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - %d{HH:mm:ss.SSS} | %highlight(%-5level) %msg%n - - - - - - - - - - -- 2.20.1