我是Kafka和Avro的noob。所以我一直试图让生产者/消费者运行。到目前为止,我已经能够生产和消费简单的字节和字符串,使用下列内容: 配置为制片人:KafkaAvroSerializer无需schema.registry.url序列化Avro
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();
}
现在,这一切都很好,问题就来了,当我试图序列一个POJO。 因此,我可以使用Avro提供的实用程序从POJO获取AvroSchema。 硬编码的模式,然后试图建立一个通用的记录通过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<String, byte[]> producer = new KafkaProducer<>(props);
这就是问题的所在:我用KafkaAvroSerializer,生产者没有按瞬间“T拿出因: 缺少强制参数:schema.registry.url
我为什么这是必需的阅读起来,让自己的消费者能够无论生产者发送给我破译。 但是,AvroMessage中没有已经嵌入的模式吗? 将是真正伟大的,如果有人可以共享使用KafkaProducer与KafkaAvroSerializer的工作示例,而无需指定schema.registry.url
也将真正体会到在架构注册表的效用任何见解/资源。
谢谢!
你试过了吗[spring-kafka avro deserializer](https://github.com) /code-not-found/spring-kafka/blob/master/spring-kafka-avro/src/main/java/com/codenotfound/kafka/serializer/AvroDeserializer.java)? [这里](https://www.codenotfound.com/spring-kafka-apache-avro-serializer-deserializer-example.html)一个教程。 –