
com.mitchseymour.kafka.serialization.avro.AvroSerializer Maven / Gradle / Ivy
package com.mitchseymour.kafka.serialization.avro;
import java.io.ByteArrayOutputStream;
import java.util.Map;
import org.apache.avro.io.DatumWriter;
import org.apache.avro.io.Encoder;
import org.apache.avro.io.EncoderFactory;
import org.apache.avro.specific.SpecificDatumWriter;
import org.apache.avro.specific.SpecificRecordBase;
import org.apache.kafka.common.serialization.Serializer;
class AvroSerializer implements Serializer {
private Class sourceClass;
/** Default constructor needed by Kafka */
public AvroSerializer(Class sourceClass) {
this.sourceClass = sourceClass;
}
@Override
public void configure(Map props, boolean isKey) {}
@Override
public byte[] serialize(String topic, T t) {
DatumWriter datumWriter = new SpecificDatumWriter<>(sourceClass);
byte[] bytes;
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
Encoder binaryEncoder = EncoderFactory.get().binaryEncoder(out, null);
datumWriter.write(t, binaryEncoder);
binaryEncoder.flush();
bytes = out.toByteArray();
} catch (Exception e) {
throw new RuntimeException(e);
}
return bytes;
}
@Override
public void close() {}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy