Не удалось преобразовать Avro GenericData.Record в байтовый массив - PullRequest
0 голосов
/ 03 ноября 2019

Я создал GenericData.Record из класса POJO в Java и пытаюсь сериализовать этот объект в байтовый массив и отправить его в тему kafka, используя прилагаемый код. Но я получаю следующее исключение: UserMetaData не может быть приведен к org.apache.avro.generic.IndexedRecord

Что не так?

Спасибо!

@Override
public byte[] serialize(String topic, T data) {
        try {
        byte[] result = null;

        if (data != null) {
        LOGGER.debug("data='{}'", data);

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        BinaryEncoder binaryEncoder =
        EncoderFactory.get().binaryEncoder(byteArrayOutputStream, null);

        DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(data.getSchema());
        datumWriter.write(data, binaryEncoder);

        binaryEncoder.flush();
        byteArrayOutputStream.close();

        result = byteArrayOutputStream.toByteArray();
        LOGGER.debug("serialized data='{}'", DatatypeConverter.printHexBinary(result));
        }
        return result;
        } catch (IOException ex) {
        throw new SerializationException(
        "Can't serialize data='" + data + "' for topic='" + topic + "'", ex);
        }
        }
...