From a1decdb06a00c2a3b819e392062797e2b752658b Mon Sep 17 00:00:00 2001 From: Raja Kolli Date: Sat, 12 Aug 2023 13:41:03 +0000 Subject: [PATCH 1/4] feat : including documentation --- .gitpod.yml | 2 +- .vscode/launch.json | 10 ++++++++++ kafka-sample/spring-boot/pom.xml | 12 ++++++++++++ .../src/main/resources/application.properties | 15 ++++++++++++++- .../TestBootKafkaSampleApplication.java | 2 +- 5 files changed, 38 insertions(+), 3 deletions(-) diff --git a/.gitpod.yml b/.gitpod.yml index cad3b1f2..eaa14089 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -8,7 +8,7 @@ image: gitpod/workspace-java-17 vscode: extensions: - vscjava.vscode-java-pack - - Pivotal.vscode-boot-dev-pack + - vmware.vscode-boot-dev-pack - GabrielBB.vscode-lombok - ms-azuretools.vscode-docker - redhat.java diff --git a/.vscode/launch.json b/.vscode/launch.json index aab426b0..71a14cb6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -85,6 +85,16 @@ "projectName": "analytics-spring-cloud-streams-kafka-consumer", "args": "", "envFile": "${workspaceFolder}/.env" + }, + { + "type": "java", + "name": "Spring Boot-TestBootKafkaSampleApplication", + "request": "launch", + "cwd": "${workspaceFolder}", + "mainClass": "com.example.springbootkafkasample.TestBootKafkaSampleApplication", + "projectName": "spring-boot-kafka-sample", + "args": "", + "envFile": "${workspaceFolder}/.env" } ] } \ No newline at end of file diff --git a/kafka-sample/spring-boot/pom.xml b/kafka-sample/spring-boot/pom.xml index f192701c..6f29e100 100644 --- a/kafka-sample/spring-boot/pom.xml +++ b/kafka-sample/spring-boot/pom.xml @@ -44,6 +44,18 @@ springdoc-openapi-starter-webmvc-ui ${springdoc-openapi.version} + + + io.github.springwolf + springwolf-kafka + 0.13.0 + + + + io.github.springwolf + springwolf-ui + 0.8.0 + org.springframework.boot diff --git a/kafka-sample/spring-boot/src/main/resources/application.properties b/kafka-sample/spring-boot/src/main/resources/application.properties index 49908713..86a4d400 100644 --- a/kafka-sample/spring-boot/src/main/resources/application.properties +++ b/kafka-sample/spring-boot/src/main/resources/application.properties @@ -7,4 +7,17 @@ spring.kafka.consumer.properties.spring.json.trusted.packages=com.example.spring spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.UUIDSerializer -spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer \ No newline at end of file +spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer + +##89 springwolf +springwolf.docket.base-package=com.example.springbootkafkasample +springwolf.docket.id=urn:com.example:boot-sample-kafka +springwolf.docket.default-content-type=application/json + +springwolf.docket.info.title=${spring.application.name} +springwolf.docket.info.version=1.0.0 + +springwolf.docket.servers.kafka.protocol=kafka +springwolf.docket.servers.kafka.url=${spring.kafka.bootstrap-servers:localhost:9092} + +springwolf.plugin.kafka.publishing.enabled=true \ No newline at end of file diff --git a/kafka-sample/spring-boot/src/test/java/com/example/springbootkafkasample/TestBootKafkaSampleApplication.java b/kafka-sample/spring-boot/src/test/java/com/example/springbootkafkasample/TestBootKafkaSampleApplication.java index d91b26f2..b841f703 100644 --- a/kafka-sample/spring-boot/src/test/java/com/example/springbootkafkasample/TestBootKafkaSampleApplication.java +++ b/kafka-sample/spring-boot/src/test/java/com/example/springbootkafkasample/TestBootKafkaSampleApplication.java @@ -13,7 +13,7 @@ public class TestBootKafkaSampleApplication { @Bean @ServiceConnection KafkaContainer kafkaContainer() { - return new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka").withTag("7.4.0")).withKraft(); + return new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka").withTag("7.4.1")).withKraft(); } public static void main(String[] args) { From d8493b2742b9cd12f34f2f0bca1cc8613748a0b5 Mon Sep 17 00:00:00 2001 From: Raja Kolli Date: Sat, 12 Aug 2023 14:04:27 +0000 Subject: [PATCH 2/4] fixes issue with documentation --- .vscode/settings.json | 3 ++- kafka-sample/spring-boot/README.md | 4 ++++ .../service/sender/Sender.java | 20 +++++++++++++++++++ .../src/main/resources/application.properties | 3 +++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 8abc2a64..2fcfb47c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -javaagent:\"/workspace/.vscode-remote/extensions/gabrielbb.vscode-lombok-1.0.1/server/lombok.jar\"", "java.configuration.updateBuildConfiguration": "automatic", - "java.compile.nullAnalysis.mode": "automatic" + "java.compile.nullAnalysis.mode": "automatic", + "java.debug.settings.onBuildFailureProceed": true } \ No newline at end of file diff --git a/kafka-sample/spring-boot/README.md b/kafka-sample/spring-boot/README.md index 822cdd5e..3d8ea6b8 100644 --- a/kafka-sample/spring-boot/README.md +++ b/kafka-sample/spring-boot/README.md @@ -3,3 +3,7 @@ This sample demonstrates sending message to topic (test_1), after listening to it will send the same message to (test_2). test_2 topic is configured for validation and if it fails then it will be retried for 3 times and moved to deadletter queue using non blocking way + + +### URLS +* KafkaUI : http://localhost:8080/springwolf/asyncapi-ui.html diff --git a/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java b/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java index 11217c2d..60aad2f5 100644 --- a/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java +++ b/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java @@ -1,6 +1,11 @@ package com.example.springbootkafkasample.service.sender; +import static org.springframework.kafka.support.mapping.AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME; + import com.example.springbootkafkasample.dto.MessageDTO; +import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.AsyncOperation; +import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.AsyncPublisher; +import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.KafkaAsyncOperationBinding; import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,6 +23,21 @@ public Sender(KafkaTemplate template) { this.template = template; } + @AsyncPublisher( + operation = + @AsyncOperation( + channelName = "producer-topic", + description = "MessageDTO payload", + headers = + @AsyncOperation.Headers( + schemaName = "SpringKafkaDefaultHeaders", + values = { + @AsyncOperation.Headers.Header( + name = DEFAULT_CLASSID_FIELD_NAME, + description = "Spring Type Id Header", + value = "com.example.springbootkafkasample.dto.MessageDTO"), + }))) + @KafkaAsyncOperationBinding public void send(MessageDTO messageDTO) { this.template.send(messageDTO.topic(), UUID.randomUUID(), messageDTO).whenComplete((result, ex) -> { if (ex == null) { diff --git a/kafka-sample/spring-boot/src/main/resources/application.properties b/kafka-sample/spring-boot/src/main/resources/application.properties index 86a4d400..c98a4870 100644 --- a/kafka-sample/spring-boot/src/main/resources/application.properties +++ b/kafka-sample/spring-boot/src/main/resources/application.properties @@ -1,3 +1,5 @@ +server.port=8080 +spring.application.name=boot-kafka-sample spring.kafka.consumer.group-id=foo spring.kafka.consumer.auto-offset-reset=latest @@ -16,6 +18,7 @@ springwolf.docket.default-content-type=application/json springwolf.docket.info.title=${spring.application.name} springwolf.docket.info.version=1.0.0 +springwolf.docket.info.license.name=Apache License 2.0 springwolf.docket.servers.kafka.protocol=kafka springwolf.docket.servers.kafka.url=${spring.kafka.bootstrap-servers:localhost:9092} From ad8cf09c87ea76f6a8b9951ad877663b9aed8c5b Mon Sep 17 00:00:00 2001 From: Raja Kolli Date: Sat, 12 Aug 2023 14:12:18 +0000 Subject: [PATCH 3/4] attempt to fix publishing message --- .../example/springbootkafkasample/service/sender/Sender.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java b/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java index 60aad2f5..fbe82674 100644 --- a/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java +++ b/kafka-sample/spring-boot/src/main/java/com/example/springbootkafkasample/service/sender/Sender.java @@ -26,7 +26,7 @@ public Sender(KafkaTemplate template) { @AsyncPublisher( operation = @AsyncOperation( - channelName = "producer-topic", + channelName = "test1", description = "MessageDTO payload", headers = @AsyncOperation.Headers( From 2e5d228b3cba79ba9190f1d739b48f22b265ef82 Mon Sep 17 00:00:00 2001 From: Raja Kolli Date: Wed, 16 Aug 2023 15:07:43 +0530 Subject: [PATCH 4/4] increment UI version --- kafka-sample/spring-boot/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kafka-sample/spring-boot/pom.xml b/kafka-sample/spring-boot/pom.xml index 6f29e100..12d3039f 100644 --- a/kafka-sample/spring-boot/pom.xml +++ b/kafka-sample/spring-boot/pom.xml @@ -54,7 +54,7 @@ io.github.springwolf springwolf-ui - 0.8.0 + 0.13.0