From 31e57678d4c143096f2534a8a4086662beaa3a77 Mon Sep 17 00:00:00 2001 From: Savosin Denis Date: Tue, 3 Jun 2025 10:31:16 +0700 Subject: [PATCH] move consumers to new sub-project --- build.gradle.kts | 10 +++++----- core/build.gradle.kts | 3 +++ .../demo/core/services/metrics/MetricSender.kt | 2 +- .../demo/core/services/metrics/MetricSenderImpl.kt | 2 +- edge-consuming/build.gradle.kts | 13 +++++++++++++ .../edgeconsuming/config}/CityConsumerConfig.kt | 6 +++--- .../edgeconsuming/consumer/CityCreateConsumer.kt | 7 +++++++ .../consumer}/CityCreateConsumerImpl.kt | 6 +++--- .../demo/edgeconsuming}/dto/CityCreateDto.kt | 3 ++- .../edgeconsumer/config/CityConsumerConfigTest.kt | 11 +++++------ settings.gradle.kts | 1 + .../demo/services/kafka/CityCreateConsumer.kt | 7 ------- 12 files changed, 44 insertions(+), 27 deletions(-) rename src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSender.kt => core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSender.kt (54%) rename src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSenderImpl.kt => core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSenderImpl.kt (90%) create mode 100644 edge-consuming/build.gradle.kts rename {src/main/kotlin/com/github/dannecron/demo/config/kafka => edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/config}/CityConsumerConfig.kt (63%) create mode 100644 edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer/CityCreateConsumer.kt rename {src/main/kotlin/com/github/dannecron/demo/services/kafka => edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer}/CityCreateConsumerImpl.kt (84%) rename {src/main/kotlin/com/github/dannecron/demo/services/kafka => edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming}/dto/CityCreateDto.kt (80%) rename src/test/kotlin/com/github/dannecron/demo/config/kafka/CityEntityCreateConsumerImplConfigTest.kt => edge-consuming/src/test/kotlin/com/github/dannecron/demo/edgeconsumer/config/CityConsumerConfigTest.kt (88%) delete mode 100644 src/main/kotlin/com/github/dannecron/demo/services/kafka/CityCreateConsumer.kt diff --git a/build.gradle.kts b/build.gradle.kts index f4d381e..254af7b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -44,6 +44,9 @@ allprojects { } dependencies { + runtimeOnly(rootProject.libs.micrometer.registry.prometheus) + + implementation(rootProject.libs.bundles.tracing) implementation(rootProject.libs.kotlin.reflect) implementation(rootProject.libs.kotlinx.serialization.json) implementation(rootProject.libs.logback.encoder) @@ -77,16 +80,13 @@ subprojects { dependencies { implementation(project(":db")) implementation(project(":core")) + implementation(project(":edge-consuming")) - runtimeOnly(libs.micrometer.registry.prometheus) - - implementation(libs.bundles.tracing) implementation(libs.jackson.datatype.jsr) implementation(libs.jackson.module.kotlin) implementation(libs.ktor.client.cio) implementation(libs.ktor.client.core) implementation(libs.postgres) - implementation(libs.spring.boot.starter.actuator) implementation(libs.spring.boot.starter.jdbc) implementation(libs.spring.boot.starter.mustache) implementation(libs.spring.boot.starter.validation) @@ -96,13 +96,13 @@ dependencies { implementation(libs.spring.doc.openapi.starter) testImplementation(libs.ktor.client.mock) - testImplementation(libs.spring.boot.starter.actuatorAutoconfigure) testImplementation(libs.spring.cloud.streamTestBinder) testImplementation(libs.testcontainers) testImplementation(libs.testcontainers.junit.jupiter) developmentOnly(libs.spring.boot.devtools) + kover(project(":edge-consuming")) kover(project(":core")) kover(project(":db")) } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 877c77a..cbb58df 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -4,7 +4,10 @@ version = "single-version" dependencies { implementation(project(":db")) + implementation(rootProject.libs.spring.boot.starter.actuator) implementation(rootProject.libs.spring.boot.starter.jdbc) implementation(rootProject.libs.spring.boot.starter.validation) implementation(rootProject.libs.json.schema.validator) + + testImplementation(rootProject.libs.spring.boot.starter.actuatorAutoconfigure) } diff --git a/src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSender.kt b/core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSender.kt similarity index 54% rename from src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSender.kt rename to core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSender.kt index c26531e..b2741a8 100644 --- a/src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSender.kt +++ b/core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSender.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.services.metrics +package com.github.dannecron.demo.core.services.metrics interface MetricsSender { fun incrementConsumerCityCreate() diff --git a/src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSenderImpl.kt b/core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSenderImpl.kt similarity index 90% rename from src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSenderImpl.kt rename to core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSenderImpl.kt index ce43b05..b309348 100644 --- a/src/main/kotlin/com/github/dannecron/demo/services/metrics/MetricsSenderImpl.kt +++ b/core/src/main/kotlin/com/github/dannecron/demo/core/services/metrics/MetricSenderImpl.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.services.metrics +package com.github.dannecron.demo.core.services.metrics import io.micrometer.core.instrument.Counter import io.micrometer.core.instrument.MeterRegistry diff --git a/edge-consuming/build.gradle.kts b/edge-consuming/build.gradle.kts new file mode 100644 index 0000000..dc897ce --- /dev/null +++ b/edge-consuming/build.gradle.kts @@ -0,0 +1,13 @@ +group = "com.github.dannecron.demo" +version = "single-version" + +dependencies { + implementation(project(":core")) + + implementation(rootProject.libs.jackson.datatype.jsr) + implementation(rootProject.libs.jackson.module.kotlin) + implementation(rootProject.libs.spring.cloud.starter.streamKafka) + implementation(rootProject.libs.spring.cloud.stream) + + testImplementation(rootProject.libs.spring.cloud.streamTestBinder) +} diff --git a/src/main/kotlin/com/github/dannecron/demo/config/kafka/CityConsumerConfig.kt b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/config/CityConsumerConfig.kt similarity index 63% rename from src/main/kotlin/com/github/dannecron/demo/config/kafka/CityConsumerConfig.kt rename to edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/config/CityConsumerConfig.kt index 902df7c..dd42828 100644 --- a/src/main/kotlin/com/github/dannecron/demo/config/kafka/CityConsumerConfig.kt +++ b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/config/CityConsumerConfig.kt @@ -1,7 +1,7 @@ -package com.github.dannecron.demo.config.kafka +package com.github.dannecron.demo.edgeconsuming.config -import com.github.dannecron.demo.services.kafka.CityCreateConsumer -import com.github.dannecron.demo.services.kafka.dto.CityCreateDto +import com.github.dannecron.demo.edgeconsuming.consumer.CityCreateConsumer +import com.github.dannecron.demo.edgeconsuming.dto.CityCreateDto import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import java.util.function.Consumer diff --git a/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer/CityCreateConsumer.kt b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer/CityCreateConsumer.kt new file mode 100644 index 0000000..8e92ca3 --- /dev/null +++ b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer/CityCreateConsumer.kt @@ -0,0 +1,7 @@ +package com.github.dannecron.demo.edgeconsuming.consumer + +import com.github.dannecron.demo.edgeconsuming.dto.CityCreateDto + +interface CityCreateConsumer { + fun process(cityCreateDto: CityCreateDto) +} diff --git a/src/main/kotlin/com/github/dannecron/demo/services/kafka/CityCreateConsumerImpl.kt b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer/CityCreateConsumerImpl.kt similarity index 84% rename from src/main/kotlin/com/github/dannecron/demo/services/kafka/CityCreateConsumerImpl.kt rename to edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer/CityCreateConsumerImpl.kt index 87a3538..dde7a4d 100644 --- a/src/main/kotlin/com/github/dannecron/demo/services/kafka/CityCreateConsumerImpl.kt +++ b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/consumer/CityCreateConsumerImpl.kt @@ -1,9 +1,9 @@ -package com.github.dannecron.demo.services.kafka +package com.github.dannecron.demo.edgeconsuming.consumer import com.github.dannecron.demo.core.dto.CityCreate import com.github.dannecron.demo.core.services.city.CityService -import com.github.dannecron.demo.services.kafka.dto.CityCreateDto -import com.github.dannecron.demo.services.metrics.MetricsSender +import com.github.dannecron.demo.core.services.metrics.MetricsSender +import com.github.dannecron.demo.edgeconsuming.dto.CityCreateDto import org.springframework.stereotype.Component import java.time.OffsetDateTime import java.time.format.DateTimeFormatter diff --git a/src/main/kotlin/com/github/dannecron/demo/services/kafka/dto/CityCreateDto.kt b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/dto/CityCreateDto.kt similarity index 80% rename from src/main/kotlin/com/github/dannecron/demo/services/kafka/dto/CityCreateDto.kt rename to edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/dto/CityCreateDto.kt index 562d62d..fc1efa5 100644 --- a/src/main/kotlin/com/github/dannecron/demo/services/kafka/dto/CityCreateDto.kt +++ b/edge-consuming/src/main/kotlin/com/github/dannecron/demo/edgeconsuming/dto/CityCreateDto.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.services.kafka.dto +package com.github.dannecron.demo.edgeconsuming.dto import kotlinx.serialization.Serializable @@ -10,3 +10,4 @@ data class CityCreateDto ( val updatedAt: String?, val deletedAt: String?, ) + diff --git a/src/test/kotlin/com/github/dannecron/demo/config/kafka/CityEntityCreateConsumerImplConfigTest.kt b/edge-consuming/src/test/kotlin/com/github/dannecron/demo/edgeconsumer/config/CityConsumerConfigTest.kt similarity index 88% rename from src/test/kotlin/com/github/dannecron/demo/config/kafka/CityEntityCreateConsumerImplConfigTest.kt rename to edge-consuming/src/test/kotlin/com/github/dannecron/demo/edgeconsumer/config/CityConsumerConfigTest.kt index 79df813..c1ae553 100644 --- a/src/test/kotlin/com/github/dannecron/demo/config/kafka/CityEntityCreateConsumerImplConfigTest.kt +++ b/edge-consuming/src/test/kotlin/com/github/dannecron/demo/edgeconsumer/config/CityConsumerConfigTest.kt @@ -1,14 +1,14 @@ -package com.github.dannecron.demo.config.kafka +package com.github.dannecron.demo.edgeconsumer.config -import com.github.dannecron.demo.services.kafka.CityCreateConsumer -import com.github.dannecron.demo.services.kafka.dto.CityCreateDto +import com.github.dannecron.demo.edgeconsuming.config.CityConsumerConfig +import com.github.dannecron.demo.edgeconsuming.consumer.CityCreateConsumer +import com.github.dannecron.demo.edgeconsuming.dto.CityCreateDto import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import org.junit.jupiter.api.Test import org.mockito.kotlin.after import org.mockito.kotlin.verify import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration @@ -43,10 +43,9 @@ import java.util.UUID DataSourceTransactionManagerAutoConfiguration::class, HibernateJpaAutoConfiguration::class, SecurityAutoConfiguration::class, - EndpointAutoConfiguration::class, ] ) -class CityEntityCreateConsumerImplConfigTest { +class CityConsumerConfigTest { @Autowired private lateinit var inputDestination: InputDestination diff --git a/settings.gradle.kts b/settings.gradle.kts index 556f685..c54f066 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -4,3 +4,4 @@ plugins { rootProject.name = "demo" include("db") include("core") +include("edge-consuming") diff --git a/src/main/kotlin/com/github/dannecron/demo/services/kafka/CityCreateConsumer.kt b/src/main/kotlin/com/github/dannecron/demo/services/kafka/CityCreateConsumer.kt deleted file mode 100644 index 291f4dc..0000000 --- a/src/main/kotlin/com/github/dannecron/demo/services/kafka/CityCreateConsumer.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.dannecron.demo.services.kafka - -import com.github.dannecron.demo.services.kafka.dto.CityCreateDto - -interface CityCreateConsumer { - fun process(cityCreateDto: CityCreateDto) -}