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

com.mitchseymour.kafka.serialization.avro.AvroDeserializer Maven / Gradle / Ivy

package com.mitchseymour.kafka.serialization.avro;

import java.util.Map;
import org.apache.avro.io.DatumReader;
import org.apache.avro.io.Decoder;
import org.apache.avro.io.DecoderFactory;
import org.apache.avro.specific.SpecificDatumReader;
import org.apache.avro.specific.SpecificRecordBase;
import org.apache.kafka.common.serialization.Deserializer;

public class AvroDeserializer implements Deserializer {
  private Class destinationClass;

  /** Default constructor needed by Kafka */
  public AvroDeserializer(Class destinationClass) {
    this.destinationClass = destinationClass;
  }

  @Override
  public void configure(Map props, boolean isKey) {}

  @Override
  public T deserialize(String topic, byte[] bytes) {
    try {
      DatumReader reader = new SpecificDatumReader<>(destinationClass.newInstance().getSchema());
      Decoder binaryDecoder = DecoderFactory.get().binaryDecoder(bytes, null);
      return reader.read(null, binaryDecoder);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }

  @Override
  public void close() {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy