Search code examples
apache-kafkaavrospring-cloud-stream

Is schema registry required with any kafka avro set up?


Very new to Kafka and getting very confused with multiple tutorials. Is schema registry required with any kafka avro set up? How to setup with a spring boot-Kafka project.


Solution

  • In spring docs, you can find simple example to see and understand basic requirements to setup spring-kafka project. From maven repository to basic producer and consumer configs. Here is the link: A Very, Very Quick Example

    In addition to above example, to setup your kafka APIs for Schema Registry, you need to have below configurations

    For producer:

    Properties props = new Properties();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
    props.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, "http://localhost:8081");
    

    For consumer:

    Properties props = new Properties();
    props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    props.put(ConsumerConfig.GROUP_ID_CONFIG, groupName);
    props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
    props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class.getName());
    props.put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, false);
    props.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, "http://localhost:8081");
    

    Above configs work for me when I use kafka_2.11-2.1.1 along with SR-5.1.2. Hope this helps