1020. JsonSerde - dkkahm/study-kafka-with-spring GitHub Wiki
Topology
@Slf4j
@Configuration
public class PromotionUppercaseSpringJsonStream {
@Bean
public KStream<String, PromotionMessage> kstreamPromotionUppercase(StreamsBuilder builder) {
var stringSerde = Serdes.String();
var jsonSerde = new JsonSerde<>(PromotionMessage.class);
KStream<String, PromotionMessage> sourceStream = builder.stream("t.commodity.promotion", Consumed.with(stringSerde, jsonSerde));
KStream<String, PromotionMessage> uppercaseStream = sourceStream.mapValues(this::uppercasePromotionCode);
uppercaseStream.to("t.commodity.promotion.uppercase", Produced.with(stringSerde, jsonSerde));
sourceStream.print(Printed.<String, PromotionMessage>toSysOut().withLabel("Original Stream"));
uppercaseStream.print(Printed.<String, PromotionMessage>toSysOut().withLabel("Uppercase Stream"));
return sourceStream;
}
private PromotionMessage uppercasePromotionCode(PromotionMessage message) {
return new PromotionMessage(message.getPromotionCode().toUpperCase());
}
}