当前位置:  开发笔记 > 编程语言 > 正文

将pojos转换为confluent.io中的通用记录,以通过KafkaProducer发送

如何解决《将pojos转换为confluent.io中的通用记录,以通过KafkaProducer发送》经验,为你挑选了0个好方法。

我是Kafka和avro的新手,并尝试使用汇合包.我们有用于JPA的现有POJO,我希望能够简单地生成我的POJO的实例,而无需手动将每个值反映到通用记录中.我似乎想念文档中是如何完成的.

这些示例使用通用记录并逐个设置每个值,如下所示:

String key = "key1";
String userSchema = "{\"type\":\"record\"," +
                    "\"name\":\"myrecord\"," +
                    "\"fields\":[{\"name\":\"f1\",\"type\":\"string\"}]}";
Schema.Parser parser = new Schema.Parser();
Schema schema = parser.parse(userSchema);
GenericRecord avroRecord = new GenericData.Record(schema);
avroRecord.put("f1", "value1");

record = new ProducerRecord("topic1", key, avroRecord);
try {
  producer.send(record);
} catch(SerializationException e) {
  // may need to do something with it
}

有几个从类中获取模式的示例,我发现注释可以根据需要更改该模式.现在我如何获取POJO的实例并将其直接发送到序列化程序并让库完成从类中匹配模式然后将值复制到通用记录中的工作?我错了吗?我想要最终做的是这样的:

String key = "key1";
Schema schema = ReflectData.get().getSchema(myObject.getClass());
GenericRecord avroRecord = ReflectData.get().getRecord(myObject, schema);

record = new ProducerRecord("topic1", key, avroRecord);
try {
  producer.send(record);
} catch(SerializationException e) {
  // may need to do something with it
}

谢谢!

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有