diff --git a/pennyway-socket/src/main/java/kr/co/pennyway/socket/config/JacksonConfig.kt b/pennyway-socket/src/main/java/kr/co/pennyway/socket/config/JacksonConfig.kt new file mode 100644 index 000000000..193dafac9 --- /dev/null +++ b/pennyway-socket/src/main/java/kr/co/pennyway/socket/config/JacksonConfig.kt @@ -0,0 +1,18 @@ +package kr.co.pennyway.socket.config; + +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration; + +@Configuration +class JacksonConfig { + @Bean + fun objectMapper(): ObjectMapper { + return ObjectMapper().apply { + registerModule(JavaTimeModule()) + disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + } + } +} \ No newline at end of file diff --git a/pennyway-socket/src/main/java/kr/co/pennyway/socket/relay/SpendingShareEventListener.kt b/pennyway-socket/src/main/java/kr/co/pennyway/socket/relay/SpendingShareEventListener.kt index cde1a95b8..542a75a0c 100644 --- a/pennyway-socket/src/main/java/kr/co/pennyway/socket/relay/SpendingShareEventListener.kt +++ b/pennyway-socket/src/main/java/kr/co/pennyway/socket/relay/SpendingShareEventListener.kt @@ -15,6 +15,7 @@ import org.springframework.amqp.rabbit.annotation.QueueBinding import org.springframework.amqp.rabbit.annotation.RabbitListener import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.stereotype.Component +import java.time.LocalDate @Slf4j @Component @@ -27,6 +28,11 @@ class SpendingShareEventListener( private val log = logger() } + private data class Payload( + val date: LocalDate, + val spendingOnDates: List + ) + @RabbitListener( containerFactory = "simpleRabbitListenerContainerFactory", bindings = [QueueBinding( @@ -38,7 +44,7 @@ class SpendingShareEventListener( fun handle(event: SpendingChatShareEvent) { log.debug("handle: {}", event) - convertToJson(event.spendingOnDates()) + convertToJson(Payload(event.date(), event.spendingOnDates())) .getOrNull() ?.let { payload -> chatMessageSendService.execute( @@ -50,15 +56,15 @@ class SpendingShareEventListener( event.senderId(), event.name(), null, - mapOf("Content-Type" to "application/json", "date" to event.date()) + mapOf("Content-Type" to "application/json") ) ) } } - private fun convertToJson(spendingOnDates: List): Result = + private fun convertToJson(payload: Payload): Result = runCatching { - objectMapper.writeValueAsString(spendingOnDates) + objectMapper.writeValueAsString(payload) }.onFailure { log.error("Failed to serialize spendingOnDates", it) }