У меня есть проект Quarkus и производитель Kafka, у которого есть
SpecificAvroSerializer<MyObject>
который успешно пишет в тему, и я вижу сообщение ок
Затем я прикрепляю поток к этой теме с помощью
SpecificAvroSerde<MyObject> myObject = new SpecificAvroSerde<>(schemaRegistry);
Но во время обработки сообщения внутри потока я все равно получаю
java.lang.ClassCastException: class org.apache.avro.generic.GenericData$Record cannot be cast to class org.apache.avro.specific.SpecificRecord (org.apache.avro.generic.GenericData$Record and org.apache.avro.specific.SpecificRecord are in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @3c0a50da)
похоже, возникла проблема с QuarkusClassLoader при попытке привести результат к SpecificAvroSerde
@OneCricketeer какой объект?
Точно забыл, но это что-то вроде value.deserializer.specific.avro.reader=true, по крайней мере для десериализатора Confluent docs.confluent.io/platform/current/schema-registry/fundamentals/…
@OneCricketeer ... это сработало ... можешь ли ты написать ответ, чтобы я мог принять правильное решение




Ошибка говорит о том, что GenericRecord нельзя преобразовать в более конкретный тип (SpecificRecord).
Поведение Confluent Deserializer по умолчанию заключается в использовании GenericRecord, и вам необходимо явно указать ему использовать типы SpecificRecord (или ReflectDatum) Avro.
value.deserializer.specific.avro.reader=true
Это библиотека Avro, в которой говорится, что вы пытаетесь понизить значение, а не Quarkus... В десериализаторе есть свойство, которое вы должны явно установить для конкретного avro-ридера.