From: Kai Moritz Date: Fri, 14 Feb 2025 14:16:01 +0000 (+0100) Subject: Type-Mappings für den `StringJsonMessageConverter` konfiguriert X-Git-Tag: spring/spring-producer--messageconverter--COMMITS--2025-02 X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=ca41ff758db740e759abaca48f92a6b753ef1d2d;p=demos%2Fkafka%2Ftraining Type-Mappings für den `StringJsonMessageConverter` konfiguriert --- diff --git a/src/main/java/de/juplo/kafka/ApplicationConfiguration.java b/src/main/java/de/juplo/kafka/ApplicationConfiguration.java index 4a937cde..f3768655 100644 --- a/src/main/java/de/juplo/kafka/ApplicationConfiguration.java +++ b/src/main/java/de/juplo/kafka/ApplicationConfiguration.java @@ -10,8 +10,12 @@ import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.core.ProducerFactory; import org.springframework.kafka.support.converter.ByteArrayJsonMessageConverter; import org.springframework.kafka.support.converter.JsonMessageConverter; +import org.springframework.kafka.support.mapping.DefaultJackson2JavaTypeMapper; +import org.springframework.kafka.support.mapping.Jackson2JavaTypeMapper; import java.time.Duration; +import java.util.HashMap; +import java.util.Map; @Configuration @@ -50,6 +54,18 @@ public class ApplicationConfiguration @Bean public ByteArrayJsonMessageConverter jsonMessageConverter(ObjectMapper objectMapper) { - return new ByteArrayJsonMessageConverter(objectMapper); + ByteArrayJsonMessageConverter converter = new ByteArrayJsonMessageConverter(); + DefaultJackson2JavaTypeMapper typeMapper = new DefaultJackson2JavaTypeMapper(); + + // Verwende eine einfache, kurze Type-ID anstatt FQN + typeMapper.setTypePrecedence(Jackson2JavaTypeMapper.TypePrecedence.TYPE_ID); + Map> typeMappings = new HashMap<>(); + typeMappings.put("ADD", AddNumberMessage.class); + typeMappings.put("CALC", CalculateSumMessage.class); + typeMapper.setIdClassMapping(typeMappings); + + converter.setTypeMapper(typeMapper); + + return converter; } }