Я задавался вопросом о необходимости реестра схемы Avro при использовании сообщений из темы Kafka с использованием статически типизированного языка, такого как Java. Я получаю сообщения из настройки темы Kafka следующим образом:
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
в моем проекте?