All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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