]> juplo.de Git - demos/kafka/training/commitdiff
`spring-producer` verschickt Nachrichten aus geteilter Lib springkafka/spring-producer--json--messages springkafka/spring-producer--json--messages--2026-03-22--22-01 springkafka/spring-producer--json--messages--2026-03-lvm
authorKai Moritz <kai@juplo.de>
Sun, 2 Feb 2025 15:12:59 +0000 (16:12 +0100)
committerKai Moritz <kai@juplo.de>
Sun, 22 Mar 2026 20:07:28 +0000 (21:07 +0100)
README.sh
build.gradle
docker/docker-compose.yml
pom.xml
src/main/java/de/juplo/kafka/AddNumberMessage.java [deleted file]
src/main/java/de/juplo/kafka/ApplicationConfiguration.java
src/main/java/de/juplo/kafka/CalculateSumMessage.java [deleted file]
src/main/java/de/juplo/kafka/ExampleProducer.java
src/main/java/de/juplo/kafka/SumupMessage.java [deleted file]
src/main/resources/application.yml

index 3b52a5ddc3ca4e592a23ff5bc37cd059e9fc0478..9ffb1f2451c1ecf61692a11940f1771c0c2a5575 100755 (executable)
--- a/README.sh
+++ b/README.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-IMAGE=juplo/spring-producer:2.0-json-SNAPSHOT
+IMAGE=juplo/spring-producer:2.0-json-messages-SNAPSHOT
 
 if [ "$1" = "cleanup" ]
 then
index 88937de37171cf0d1732eebfd539e454202a77fd..29e674042a1f5ab7720711ad632971870fdc22c6 100644 (file)
@@ -8,7 +8,7 @@ plugins {
 }
 
 group = 'de.juplo.kafka'
-version = '2.0-json-SNAPSHOT'
+version = '2.0-json-messages-SNAPSHOT'
 
 java {
        toolchain {
@@ -24,6 +24,7 @@ configurations {
 
 repositories {
        mavenCentral()
+       mavenLocal()
 }
 
 dependencies {
@@ -31,6 +32,7 @@ dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-actuator'
        implementation 'org.springframework.boot:spring-boot-starter-validation'
        implementation 'org.springframework.boot:spring-boot-starter-web'
+       implementation 'de.juplo.messages:sumup-messages:1.0-SNAPSHOT'
        compileOnly 'org.projectlombok:lombok'
        developmentOnly 'org.springframework.boot:spring-boot-devtools'
        annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
index 5be08a7b33bd72aff50bdd8161440f566d2b5e22..6a030a366cfe76333852caee96e0775730392849 100644 (file)
@@ -173,7 +173,7 @@ services:
       - kafka-3
 
   producer:
-    image: juplo/spring-producer:2.0-json-SNAPSHOT
+    image: juplo/spring-producer:2.0-json-messages-SNAPSHOT
     environment:
       spring.kafka.bootstrap-servers: kafka:9092
       spring.kafka.client-id: producer
diff --git a/pom.xml b/pom.xml
index c7bca0dc02adee6a6b311e8483924d1b2e5ea5b9..6bb47426cd39e5b42c5bbb0a194a949ad30da442 100644 (file)
--- a/pom.xml
+++ b/pom.xml
   <artifactId>spring-producer</artifactId>
   <name>Spring Producer</name>
   <description>A Simple Producer, based on Spring Boot, that sends messages via Kafka</description>
-  <version>2.0-json-SNAPSHOT</version>
+  <version>2.0-json-messages-SNAPSHOT</version>
 
   <properties>
     <java.version>21</java.version>
+    <sumup-messages.version>1.0-SNAPSHOT</sumup-messages.version>
   </properties>
 
   <dependencies>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-kafka</artifactId>
     </dependency>
+    <dependency>
+      <groupId>de.juplo.messages</groupId>
+      <artifactId>sumup-messages</artifactId>
+      <version>${sumup-messages.version}</version>
+    </dependency>
     <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
diff --git a/src/main/java/de/juplo/kafka/AddNumberMessage.java b/src/main/java/de/juplo/kafka/AddNumberMessage.java
deleted file mode 100644 (file)
index deb6350..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.juplo.kafka;
-
-import lombok.Value;
-
-
-@Value
-public class AddNumberMessage implements SumupMessage
-{
-  private final int number;
-  private final int next;
-}
index e212a2533e9254405963d98da2d473d567bd65e8..b2c5cfa7fcd6181761ec135f1538fa8ff9f2fcc0 100644 (file)
@@ -1,5 +1,6 @@
 package de.juplo.kafka;
 
+import de.juplo.messages.Message;
 import org.apache.kafka.clients.producer.Producer;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -19,7 +20,7 @@ public class ApplicationConfiguration
   public ExampleProducer exampleProducer(
     @Value("${spring.kafka.client-id}") String clientId,
     ApplicationProperties properties,
-    Producer<String, SumupMessage> kafkaProducer,
+    Producer<String, Message> kafkaProducer,
     ConfigurableApplicationContext applicationContext)
   {
     return
diff --git a/src/main/java/de/juplo/kafka/CalculateSumMessage.java b/src/main/java/de/juplo/kafka/CalculateSumMessage.java
deleted file mode 100644 (file)
index 6aa0121..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.juplo.kafka;
-
-
-import lombok.Value;
-
-
-@Value
-public class CalculateSumMessage implements SumupMessage
-{
-  private final int number;
-}
index 04a0a99235314a830ad9bb062403ee32564c35b7..7fc40d5a13d220dd27cc6ae6584655c6fd37da9f 100644 (file)
@@ -1,5 +1,8 @@
 package de.juplo.kafka;
 
+import de.juplo.messages.Add;
+import de.juplo.messages.Calculate;
+import de.juplo.messages.Message;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.kafka.clients.producer.Producer;
 import org.apache.kafka.clients.producer.ProducerRecord;
@@ -13,7 +16,7 @@ public class ExampleProducer implements Runnable
   private final String id;
   private final String topic;
   private final Duration throttle;
-  private final Producer<String, SumupMessage> producer;
+  private final Producer<String, Message> producer;
   private final Thread workerThread;
   private final Runnable closeCallback;
 
@@ -25,7 +28,7 @@ public class ExampleProducer implements Runnable
     String id,
     String topic,
     Duration throttle,
-    Producer<String, SumupMessage> producer,
+    Producer<String, Message> producer,
     Runnable closeCallback)
   {
     this.id = id;
@@ -50,9 +53,9 @@ public class ExampleProducer implements Runnable
       for (; running; i++)
       {
         int number = i % 10;
-        SumupMessage message = (i % 7 == 0)
-          ? new CalculateSumMessage(number)
-          : new AddNumberMessage(number, i);
+        Message message = (i % 7 == 0)
+          ? Calculate.builder().number(number).build()
+          : Add.builder().number(number).next(i).build();
 
         send(Long.toString(number), message);
 
@@ -83,11 +86,11 @@ public class ExampleProducer implements Runnable
     }
   }
 
-  void send(String key, SumupMessage value)
+  void send(String key, Message value)
   {
     final long sendRequested = System.currentTimeMillis();
 
-    final ProducerRecord<String, SumupMessage> record = new ProducerRecord<>(
+    final ProducerRecord<String, Message> record = new ProducerRecord<>(
       topic,  // Topic
       key,    // Key
       value   // Value
diff --git a/src/main/java/de/juplo/kafka/SumupMessage.java b/src/main/java/de/juplo/kafka/SumupMessage.java
deleted file mode 100644 (file)
index 739efd1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package de.juplo.kafka;
-
-public interface SumupMessage
-{
-}
index e87f0a470dcd091eb16d35bb33ac14423e3b4f13..0d772cfc956b7e7b523118de4b8b6f9aba4652e6 100644 (file)
@@ -13,9 +13,6 @@ spring:
       compression-type: gzip
       value-serializer: org.springframework.kafka.support.serializer.JacksonJsonSerializer
       properties:
-        spring.json.type.mapping: >-
-          ADD:de.juplo.kafka.AddNumberMessage,
-          CALC:de.juplo.kafka.CalculateSumMessage
         metadata.max.age.ms: 5000
         request.timeout.ms: 5000
         delivery.timeout.ms: 10000