KafkaAvroSerializer zum serialisieren Avro ohne schema.Registrierung.url

Ich bin ein noob auf Kafka und Avro. So habe ich versucht, um das Producer/Consumer läuft. So weit ich in der Lage gewesen, zu produzieren und zu konsumieren, einfach Bytes und Strings, die mit den folgenden :
Konfiguration für den Produzenten :

    Properties props = new Properties();
    props.put("bootstrap.servers", "localhost:9092");
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");

    Schema.Parser parser = new Schema.Parser();
    Schema schema = parser.parse(USER_SCHEMA);
    Injection<GenericRecord, byte[]> recordInjection = GenericAvroCodecs.toBinary(schema);

    KafkaProducer<String, byte[]> producer = new KafkaProducer<>(props);

    for (int i = 0; i < 1000; i++) {
        GenericData.Record avroRecord = new GenericData.Record(schema);
        avroRecord.put("str1", "Str 1-" + i);
        avroRecord.put("str2", "Str 2-" + i);
        avroRecord.put("int1", i);

        byte[] bytes = recordInjection.apply(avroRecord);

        ProducerRecord<String, byte[]> record = new ProducerRecord<>("mytopic", bytes);
        producer.send(record);
        Thread.sleep(250);
    }
    producer.close();
}

Nun das ist ja alles schön und gut, das problem kommt, wenn ich versuche zu serialisieren ein POJO.
Also , ich war in der Lage, um die AvroSchema aus dem POJO mit dem Dienstprogramm mit Avro.
Hardcoded das schema, und dann versucht, erstellen Sie einen Generischen Datensatz zu senden, durch die KafkaProducer
der Produzent ist jetzt :

    Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.KafkaAvroSerializer");

Schema.Parser parser = new Schema.Parser();
Schema schema = parser.parse(USER_SCHEMA); //this is the Generated AvroSchema
KafkaProducer<String, byte[]> producer = new KafkaProducer<>(props);

dies ist, wo das problem ist : der moment benutze ich KafkaAvroSerializer, die Hersteller kommen nicht durch :
missing mandatory parameter : schema.Registrierung.url

Ich Lesen, warum dieses erforderlich ist, so dass der Verbraucher in der Lage ist, zu entziffern, was die Hersteller senden zu mir.
Aber ist das nicht das schema bereits eingebettet in die AvroMessage?
Wäre wirklich toll, wenn jemand kann teilen ein funktionsfähiges Beispiel KafkaProducer mit der KafkaAvroSerializer ohne Angabe von schema.Registrierung.url

wäre auch wirklich zu schätzen wissen, alle Erkenntnisse/Ressourcen auf den nutzen der schema registry.

Dank!

InformationsquelleAutor scissorHands | 2017-08-11
Schreibe einen Kommentar