Мы находимся в разработке и пытаемся удалить схему по теме, поскольку изменение несовместимо со старой схемой.
Мы удалили схему / тему и попытались создать новую схему с тем же именем субъекта, и схема была успешно создана.
Однако, когда мы запускаем приложение, оно все еще указывает на ту же схемуID.
Старый идентификатор схемы (для субъекта 'topic1'): 51
Новый идентификатор схемы (для субъекта 'topic1'): 52
Сбой приложения с ошибкой десериализациисообщение
at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:736)
Caused by: org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id 51
Caused by: org.apache.avro.AvroTypeException: Found string, expecting union
at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:292)
at org.apache.avro.io.parsing.Parser.advance(Parser.java:88)
at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:267)
at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumRea
root@bas:/# curl -k https://schemaregistry:443/subjects/topic1/versions/latest
{"subject":"topic1","version":15,"id":52,"schema":"{\"type\":\"record\",\"name\":\"TopicOutputOutput\",\"namespace\":\"com.sagar.avsc\",\"fields\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"client\",\"type\":{\"type\":\"record\",\"name\":\"ClientObject\",\"fields\":[{\"name\":\"name\",\"type\":[\"null\",\"string\"]},{\"name\":\"client_id\",\"type\":[\"null\",\"long\"]},{\"name\":\"source_system_id\",\"type\":[\"null\",\"long\"]}]}}, ...
Изменение: {\"name\":\"client_id\",\"type\":[\"null\",\"long\"]}
Вы можете видеть, что идентификатор схемы равен 52, но приложение пытается использовать более старый идентификатор схемы(51), что несовместимо с данными, которые мы отправляем
root@bas:/# curl -k https://schemaregistry:443/schemas/ids/52
{"schema":"{\"type\":\"record\",\"name\":\"TopicOutputOutput\",\"namespace\":\"com.sagar.avsc\",\"fields\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"client\",\"type\":{\"type\":\"record\",\"name\":\"ClientObject\",\"fields\":[{\"name\":\"name\",\"type\":[\"null\",\"string\"]},{\"name\":\"client_id\",\"type\":[\"null\",\"long\"]},{\"name\":\"source_system_id\",
Изменение: {\"name\":\"name\",\"type\":[\"null\",\"string\"]}
Почему приложение все еще ссылается на более старый идентификатор схемы? И есть ли способ удалитьИдентификатор схемы?