Меня интересует необходимость в реестре Avro Schema при использовании сообщений из топики Kafka c с использованием статически типизированного языка, например Java. Я использую сообщения из установки Kafka topi c, например:
Properties props = new Properties();
props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, String.join(",", kafkaProperties.getServers()));
props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class.getName());
props.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class.getName());
props.setProperty(KafkaAvroDeserializerConfig.SCHEMA_REGISTRY_URL_CONFIG, kafkaProperties.getSchemaRegistryUrl());
KafkaConsumer<byte[], FooClass> kafkaConsumer = new KafkaConsumer<>(props);;
В моем проекте у меня есть .avsc
файлы, которые определяют схему для класса FooClass. Я также настроил avro-maven-plugin
для генерации класса FooClass
для меня во время сборки.
Почему мне все еще нужно указать URL-адрес реестра схемы? Разве мой потребитель не может десериализовать значения моих сообщений Kafka, используя файл .avsc
в моем проекте?