Конфигурация для производителя:
Код: Выделить всё
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 recordInjection = GenericAvroCodecs.toBinary(schema);
KafkaProducer 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 record = new ProducerRecord("mytopic", bytes);
producer.send(record);
Thread.sleep(250);
}
producer.close();
}
Итак, мне удалось получить AvroSchema из POJO с помощью утилиты, поставляемой с Avro.
Жестко закодировал схему, а затем попытался создать общую запись для отправки через KafkaProducer
производитель теперь настроен как:
Код: Выделить всё
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 producer = new KafkaProducer(props);
отсутствует обязательный параметр: схема .registry.url
Я прочитал, почему это необходимо, чтобы мой потребитель мог расшифровать все, что мне отправляет производитель.
Но разве схема уже не встроена в AvroMessage?
Было бы очень здорово, если бы кто-нибудь поделился рабочим примером использования KafkaProducer с KafkaAvroSerializer без необходимости указывать Schema.registry.url
было бы также очень ценю любую информацию/ресурсы о полезности реестра схем.
спасибо!
Подробнее здесь: https://stackoverflow.com/questions/456 ... gistry-url
Мобильная версия