KafkaAvroSerializer для сериализации Avro без Schema.registry.urlJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 KafkaAvroSerializer для сериализации Avro без Schema.registry.url

Сообщение Anonymous »

Я новичок в Кафке и Авро. Итак, я пытался запустить производитель/потребитель. До сих пор мне удавалось создавать и потреблять простые байты и строки, используя следующее:
Конфигурация для производителя:

Код: Выделить всё

    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();
}
Теперь все в порядке, проблема возникает, когда я пытаюсь сериализовать POJO.
Итак, мне удалось получить 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);
вот в чем проблема: в тот момент, когда я использую KafkaAvroSerializer, производитель не появляется из-за:
отсутствует обязательный параметр: схема .registry.url

Я прочитал, почему это необходимо, чтобы мой потребитель мог расшифровать все, что мне отправляет производитель.
Но разве схема уже не встроена в AvroMessage?
Было бы очень здорово, если бы кто-нибудь поделился рабочим примером использования KafkaProducer с KafkaAvroSerializer без необходимости указывать Schema.registry.url

было бы также очень ценю любую информацию/ресурсы о полезности реестра схем.

спасибо!

Подробнее здесь: https://stackoverflow.com/questions/456 ... gistry-url
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»