Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Status

Current stateAccepted

Discussion thread: Link

JIRA

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyKAFKA-8326

...

  • New class org.apache.kafka.common.serialization.ListSerializer which implements the Serializer<List<T>>ListSerializer<L extends List<T>, T> implements Serializer<L> interface
  • New class org.apache.kafka.common.serialization.ListDeserializer which implements Deserializer<List<T>>ListDeserializer<L extends List<T>, T> implements Deserializer<L> interface
  • New subclass ListSerde<T>static subclass ListSerde<L extends List<T>, T> extends WrapperSerde<List<T>> in org.apache.kafka.common.serialization.Serdes which creates new serde based on ListSerializer and ListDeserializer classes
  • New method public static <T> Serde<List<T>> ListSerde(Class Class<? extends List> listClass, Serde<T> innerSerde) in  in org.apache.kafka.common.serialization.Serdes class

...

This KIP proposes adding new ListSerializer and ListDeserializer classes as well as support for the new ListSerde nested class inside the Serdes class. This will allow using List<T> List<L> Serde directly from Consumers, Producers and Streams where <L extends List<T>, T>.

List<T> List<L> serialization and deserialization will be done through repeatedly calling a serializer/deserializer for each entry provided by passed generic T L's Serdeserde. For example, if you want to create List of Strings serde, then serializer/deserializer of Serdes.StringSerde will be used to serialize/deserialize each entry in List<String>.

...

ConsumerConfig.classLIST_KEY_DEERIALIZERDESERIALIZER_INNER_CLASS_CONFIG = "list.key.deserializer.inner"

...