示例代码:
// 使用 Avro 反序列化 Java POJO
public class AvroDeserializer
public AvroDeserializer(Class targetType) {
this.targetType = targetType;
schema = targetType.newInstance().getSchema();
}
@Override
public void configure(Map config, boolean isKey) {
}
@SuppressWarnings("unchecked")
@Override
public T deserialize(String topic, byte[] data) {
T result = null;
try {
BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(data, null);
DatumReader reader = new SpecificDatumReader<>(targetType.newInstance().getSchema());
result = reader.read(null, decoder);
} catch (Exception e) {
throw new SerializationException(e);
}
return result;
}
@Override
public void close() {
}
}
// 在消费者中使用自定义反序列化器 props.put("value.deserializer", "com.example.AvroDeserializer