package hip.ch5.kafka.camus; import com.linkedin.camus.coders.CamusWrapper; import com.linkedin.camus.coders.MessageDecoder; import hip.ch3.avro.gen.Stock; import org.apache.avro.generic.GenericData; import org.apache.avro.generic.GenericDatumReader; import org.apache.avro.io.DatumReader; import org.apache.avro.io.DecoderFactory; import java.io.IOException; /** */ public class StockMessageDecoder extends MessageDecoder<byte[], GenericData.Record> { DecoderFactory factory = DecoderFactory.get(); @Override public CamusWrapper<GenericData.Record> decode(byte[] bytes) { DatumReader<GenericData.Record> reader = new GenericDatumReader<GenericData.Record>(Stock.SCHEMA$); try { GenericData.Record record = reader.read(null, factory.binaryDecoder(bytes, null)); System.out.println("Decoded " + record); return new CamusWrapper<GenericData.Record>(record); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("Got IO exception", e); } } }