[ 
https://issues.apache.org/jira/browse/KAFKA-7371?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthias J. Sax updated KAFKA-7371:
-----------------------------------
    Labels: beginner needs-kip newbie  (was: needs-kip)

> Finally deprecate org.apache.kafka.common.serialization.ExtendedSerializer
> --------------------------------------------------------------------------
>
>                 Key: KAFKA-7371
>                 URL: https://issues.apache.org/jira/browse/KAFKA-7371
>             Project: Kafka
>          Issue Type: Wish
>          Components: streams
>    Affects Versions: 2.0.0
>            Reporter: Jouni
>            Priority: Major
>              Labels: beginner, needs-kip, newbie
>
> As mentioned in the javadocs "Once Kafka drops support for Java 7, the 
> serialize()} method introduced by this interface will be added to Serializer 
> with a default implementation so that backwards compatibility is maintained. 
> This interface may be deprecated once that happens.". Support for Java 7 was 
> already dropped in Kafka 2.0.0 but this hasn't yet happened.
> The problem is that some out-of-project external serializers (for example, 
> org.springframework.kafka.support.serializer.JsonSerializer, quite commonly 
> used) already do add message headers when using producer API, one of those 
> being __TypeId__, which contains the java class name. But when using streams 
> DSL, there's no way to either access or modify those headers, and according 
> to KIP-244, they get just copied to the sink. Also, because in 
> RecordCollectorImpl.send there are calls
> final byte[] keyBytes = keySerializer.serialize(topic, key);
> final byte[] valBytes = valueSerializer.serialize(topic, value);
> and not
> final byte[] keyBytes = keySerializer.serialize(topic, headers, key);
> final byte[] valBytes = valueSerializer.serialize(topic, headers, value);
> which would be possible when the plain Serializer gets the default method 
> added. So, currently, there's no way for anyone to write a serializer that 
> modifies the headers if necessary when using streams.
> In my case, the problem occurred when transforming an object from input 
> stream to a different type of object in output stream. Took a while to debug 
> where did those (wrong) headers come from, and either disable adding those 
> headers on producer side, or as I happened to be using Processor API, modify 
> myself the headers in ProcessorContext.
> An unfortunate side-effect of two different projects making decisions 
> affecting each other. Not exactly a bug in either one, but a really big 
> nuisance to find out what's happening. I'd prefer things working as much as 
> possible mostly out-of-the-box. Ok, API changes must sometimes just be made.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to