c# - 使用 Avro 将 GenericRecord 转换为 SpecificRecord 对象
问题描述
我Confluent.Kafka.Avro
用于 Apache Kafka 的生产者和消费者之间的序列化。从生产者那里我使用特定的记录,但在消费者方面我想将所有记录作为通用的,然后将它们转换为特定的记录。有没有办法自动做到这一点?还是需要实现所有这些转换?
解决方案
如果您有特定记录并且知道可以转换为该记录,则应使用 Kafka 的SpecificRecord
反序列化器。我相信在您的 Kafka 使用者中转换为GenericRecord
有意义的唯一情况是,当您知道无法使用当前特定的数据类对 Avro 内容进行反序列化时,因为要么您没有该数据的任何特定数据类(架构/ message 事先不知道),或者架构以不兼容的方式更改,因此无法将数据反序列化到您当前的SpecificRecord
类中。这些情况都不适用于您,因为您明确表示您拥有SpecificRecord
必要的课程。
话虽如此,根据我在这里的回答https://stackoverflow.com/a/59442020/430128,您可以将 Avro 转换GenericRecord
为SpecificRecord
using deepCopy
:
SpecificData.get().deepCopy(genericRecord.schema, genericRecord)
推荐阅读
- angular - 过滤角手风琴过滤器简单数组,值传入输入
- html - 居中浮动:左元素
- html - 尝试在 1cak.com/shuffle 下载图像时获取禁止网关
- reactjs - 无法下载@react-navigation/stack
- angular - Viewchild 为空
- css - SVG 蒙版根本不渲染
- html - 如何在 Nativescript/vue JS 中加载本地 WebView
- database - 克隆 RMAN 数据库中的 Temp 和 Undo 不会根据新数据库而改变
- java - 如何使用修改内容的代理调整请求内容长度?
- git - 最佳实践 Jenkins、Angular 和 Spring