[
https://issues.apache.org/jira/browse/KAFKA-3801?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15325454#comment-15325454
]
Guozhang Wang commented on KAFKA-3801:
--------------------------------------
Before we introduced Kafka Streams, we did not consider adding static serdes
since for produce / consumer, a single serde object is sufficient, and hence it
is always required anyways; but for Kafka Streams where multiple serdes may be
needed, creating one for each such case may be cumbersome but I thought that in
practice, you won't be needing to many different ones (for example, you many
use JSON / Avro / Thrift for most cases, and only for very few streams you
would use a different one, like for primitive types) so they may be still okay.
If we observed common usage patterns where many objects need to be created for
a single application, we can consider whether it makes more sense to do this
optimization. I'm going to close it for now but feel free to re-open it
whenever you want to resume this discussion.
> Provide static serialize() and deserialize() for use as method references
> -------------------------------------------------------------------------
>
> Key: KAFKA-3801
> URL: https://issues.apache.org/jira/browse/KAFKA-3801
> Project: Kafka
> Issue Type: Improvement
> Components: clients, streams
> Reporter: Jeff Klukas
> Assignee: Guozhang Wang
> Priority: Minor
> Fix For: 0.10.1.0
>
>
> While most calls to {{Serializer.serialize}} and {{Deserializer.deserialize}}
> are abstracted away in Kafka Streams through the use of `Serdes` classes,
> there are some instances where developers may want to call them directly. The
> serializers and deserializers for simple types don't require any
> configuration and could be static, but currently it's necessary to create an
> instance to use those methods.
> I'd propose moving serialization logic into a {{static public byte[]
> serialize(? data)}} method and deserialization logic into a {{static public ?
> deserialize(byte[] data)}} method. The existing instance methods would simply
> call the static versions.
> See a full example for LongSerializer and LongDeserializer here:
> https://github.com/apache/kafka/compare/trunk...jklukas:static-serde-methods?expand=1
> In Java 8, these static methods then become available for method references
> in code like {{kstream.mapValues(LongDeserializer::deserialize)}} without the
> user needing to create an instance of {{LongDeserializer}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)