Class SpecificAvroSerde<T extends org.apache.avro.specific.SpecificRecord>
java.lang.Object
io.confluent.kafka.streams.serdes.avro.SpecificAvroSerde<T>
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.kafka.common.serialization.Serde<T>
public class SpecificAvroSerde<T extends org.apache.avro.specific.SpecificRecord>
extends Object
implements org.apache.kafka.common.serialization.Serde<T>
A schema-registry aware serde (serializer/deserializer) for Apache Kafka's Streams API that can
be used for reading and writing data in "specific Avro" format. This serde's "generic Avro"
counterpart is
GenericAvroSerde.
This serde reads and writes data according to the wire format defined at
http://docs.confluent.io/current/schema-registry/docs/serializer-formatter.html#wire-format.
It requires access to a Confluent Schema Registry endpoint, which you must
GenericAvroDeserializer.configure(Map, boolean) via the parameter
"schema.registry.url".
Usage
Example for configuring this serde as a Kafka Streams application's default serde for both record keys and record values:
Properties streamsConfiguration = new Properties();
streamsConfiguration.put(StreamsConfig.KEY_SERDE_CLASS_CONFIG, SpecificAvroSerde.class);
streamsConfiguration.put(StreamsConfig.VALUE_SERDE_CLASS_CONFIG, SpecificAvroSerde.class);
streamsConfiguration.put(
AbstractKafkaSchemaSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG,
"http://confluent-schema-registry-server:8081/");
Example for explicitly overriding the application's default serdes (whatever they were
configured to) so that only specific operations such as KStream#to() use this serde:
Serde<MyJavaClassGeneratedFromAvroSchema> specificAvroSerde = new SpecificAvroSerde<>();
boolean isKeySerde = false;
specificAvroSerde.configure(
Collections.singletonMap(
AbstractKafkaSchemaSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG,
"http://confluent-schema-registry-server:8081/"),
isKeySerde);
KStream<String, MyJavaClassGeneratedFromAvroSchema> stream = ...;
stream.to(Serdes.String(), specificAvroSerde, "my-output-topic");
-
Constructor Details
-
SpecificAvroSerde
public SpecificAvroSerde() -
SpecificAvroSerde
For testing purposes only.
-
-
Method Details
-
serializer
- Specified by:
serializerin interfaceorg.apache.kafka.common.serialization.Serde<T extends org.apache.avro.specific.SpecificRecord>
-
deserializer
- Specified by:
deserializerin interfaceorg.apache.kafka.common.serialization.Serde<T extends org.apache.avro.specific.SpecificRecord>
-
configure
- Specified by:
configurein interfaceorg.apache.kafka.common.serialization.Serde<T extends org.apache.avro.specific.SpecificRecord>
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceorg.apache.kafka.common.serialization.Serde<T extends org.apache.avro.specific.SpecificRecord>
-