From 97b673d45ebbde8dc0a7687bc4fbe89503d02a25 Mon Sep 17 00:00:00 2001 From: Denis Savosin Date: Thu, 3 Oct 2024 15:06:16 +0700 Subject: [PATCH] use kotlinx.serialization instead of ObjectMapper in kafka consumer --- .../kotlin/com/example/demo/config/KafkaConsumerConfig.kt | 3 --- .../kotlin/com/example/demo/services/kafka/Consumer.kt | 5 ++--- .../com/example/demo/services/kafka/dto/CityCreateDto.kt | 8 ++------ 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/com/example/demo/config/KafkaConsumerConfig.kt b/src/main/kotlin/com/example/demo/config/KafkaConsumerConfig.kt index 30b50c0..4841730 100644 --- a/src/main/kotlin/com/example/demo/config/KafkaConsumerConfig.kt +++ b/src/main/kotlin/com/example/demo/config/KafkaConsumerConfig.kt @@ -2,7 +2,6 @@ package com.example.demo.config import com.example.demo.services.database.city.CityService import com.example.demo.services.kafka.Consumer -import com.fasterxml.jackson.databind.ObjectMapper import org.apache.kafka.clients.consumer.ConsumerConfig import org.apache.kafka.common.serialization.StringDeserializer import org.springframework.beans.factory.annotation.Autowired @@ -23,10 +22,8 @@ class KafkaConsumerConfig( @Bean fun consumer( @Autowired cityService: CityService, - @Autowired objectMapper: ObjectMapper, ): Consumer = Consumer( cityService = cityService, - objectMapper = objectMapper, ) @Bean diff --git a/src/main/kotlin/com/example/demo/services/kafka/Consumer.kt b/src/main/kotlin/com/example/demo/services/kafka/Consumer.kt index 8dac3df..598f14f 100644 --- a/src/main/kotlin/com/example/demo/services/kafka/Consumer.kt +++ b/src/main/kotlin/com/example/demo/services/kafka/Consumer.kt @@ -2,7 +2,7 @@ package com.example.demo.services.kafka import com.example.demo.services.database.city.CityService import com.example.demo.services.kafka.dto.CityCreateDto -import com.fasterxml.jackson.databind.ObjectMapper +import kotlinx.serialization.json.Json import org.springframework.kafka.annotation.KafkaListener import org.springframework.messaging.handler.annotation.Payload import org.springframework.stereotype.Component @@ -10,14 +10,13 @@ import org.springframework.stereotype.Component @Component class Consumer( private val cityService: CityService, - private val objectMapper: ObjectMapper ) { @KafkaListener( topics = ["#{'\${kafka.consumer.topics}'.split(',')}"], autoStartup = "\${kafka.consumer.auto-startup:false}", ) fun handleCityCreate(@Payload message: String) { - val cityCreateDto = objectMapper.readValue(message, CityCreateDto::class.java) + val cityCreateDto = Json.decodeFromString(message) cityService.create(cityCreateDto) } } \ No newline at end of file diff --git a/src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt b/src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt index 0a22539..30da205 100644 --- a/src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt +++ b/src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt @@ -1,16 +1,12 @@ package com.example.demo.services.kafka.dto -import com.fasterxml.jackson.annotation.JsonProperty +import kotlinx.serialization.Serializable +@Serializable data class CityCreateDto ( - @JsonProperty("guid") val guid: String, - @JsonProperty("name") val name: String, - @JsonProperty("createdAt") val createdAt: String, - @JsonProperty("updatedAt") val updatedAt: String?, - @JsonProperty("deletedAt") val deletedAt: String?, )