From: Kai Moritz Date: Thu, 15 Jun 2023 20:34:08 +0000 (+0200) Subject: Vorlage X-Git-Tag: spring/rest-producer--json--vorlage---2023-06-signal X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=44719dc55b289160f6e5bd66277d13bfcf161fa8;p=demos%2Fkafka%2Ftraining Vorlage --- diff --git a/README.sh b/README.sh index 427eca3..696141f 100755 --- a/README.sh +++ b/README.sh @@ -36,6 +36,4 @@ while ! [[ $(http 0:8080/actuator/health 2> /dev/null) =~ "UP" ]]; do echo "Wait echo -n 3 | http -v :8080/foo; -# tag::kafkacat[] kafkacat -b :9092 -t test -o 0 -e -f 'p=%p|o=%o|k=%k|h=%h|v=%s\n' -# end::kafkacat[] diff --git a/src/main/java/de/juplo/kafka/ApplicationConfiguration.java b/src/main/java/de/juplo/kafka/ApplicationConfiguration.java index 9a11f6e..9d1bfbb 100644 --- a/src/main/java/de/juplo/kafka/ApplicationConfiguration.java +++ b/src/main/java/de/juplo/kafka/ApplicationConfiguration.java @@ -5,7 +5,6 @@ import org.apache.kafka.common.serialization.StringSerializer; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.kafka.support.serializer.JsonSerializer; import java.util.Properties; @@ -40,10 +39,8 @@ public class ApplicationConfiguration props.put("linger.ms", properties.getLingerMs()); props.put("compression.type", properties.getCompressionType()); props.put("key.serializer", StringSerializer.class.getName()); - props.put("value.serializer", JsonSerializer.class.getName()); - props.put(JsonSerializer.TYPE_MAPPINGS, - "ADD:" + AddNumberMessage.class.getName() + "," + - "CALC:" + CalculateSumMessage.class.getName()); + // TODO: Der value.serializer soll auf den JsonSerializer umgestellt werden! + props.put("value.serializer", StringSerializer.class.getName()); return new KafkaProducer<>(props); } diff --git a/src/main/java/de/juplo/kafka/RestProducer.java b/src/main/java/de/juplo/kafka/RestProducer.java index e68fe66..adf8d95 100644 --- a/src/main/java/de/juplo/kafka/RestProducer.java +++ b/src/main/java/de/juplo/kafka/RestProducer.java @@ -31,13 +31,45 @@ public class RestProducer @RequestHeader(name = "X-id", required = false) Long correlationId, @RequestBody Integer number) { + // Der Service verschickt für eine Zahl n immer n+1 Nachrichten. + // + // TODO: + // + // Diese Implementierung schickt Strings: + // Für n=3 z.B.: + // "1" + // "2" + // "3" + // "CALC" + // + // Nach der Umstellung auf JSON, sollen die JSON-Repräsentation + // der Klassen AddNumberMessage und CalcNumberMessage versendet + // werden. + // Für n=3 z.B.: + // ADD: { "number": 3, "next": 1 } + // ADD: { "number": 3, "next": 2 } + // ADD: { "number": 3, "next": 3 } + // CALC: { "number": 3 } + // Dabei gibt der String vor dem ":" das Type-Mapping an + // das verwendet werden soll. + ResultRecorder result = new ResultRecorder(number+1); for (int i = 1; i <= number; i++) { - send(key, new AddNumberMessage(number, i), correlationId, result); + // TODO: + // Senden Sie + // new AddNumberMessage(number, i) <-- Type-Mapping: ADD + // anstatt + // Integer.valueOf(i) + send(key, String.valueOf(i), correlationId, result); } - send(key, new CalculateSumMessage(number), correlationId, result); + // TODO: + // Senden Sie + // new CalculateSumMessage(number) <-- Type-Mapping: CALC + // anstatt + // "CALC" + send(key, "CALC", correlationId, result); return result.getDeferredResult(); }