Apache kafka 基于模式演化的卡夫卡avro序列化
我试图构建一个kakfa管道,将JSON输入数据读入Kafka主题。 我正在使用模式注册表的AVRO序列化,因为我的模式会定期更改。 到目前为止,GenericRecord用于解析模式。 但我最近了解到avro工具可用于读取模式和生成Java类,这些类可用于创建生产者代码。 在这两种选择中我很困惑。 你能建议我哪一个更好,因为我的模式经常改变吗 avro工具可用于读取模式并生成可用于创建生产者代码的java类 他们创建特定的Avro类,不是生产者代码,而是关于这个问题。两者都会起作用 在我看来 GenericRecord—将其视为HashMap。作为消费者,需要知道要获得的字段。如果作为生产者或模式创建者,您无法将类作为库发送给消费者,那么这基本上是您所能获得的最好结果。我相信您总是能够获得最新的数据,尽管所有可能的字段都可以通过getfieldname调用访问。 SpecificRecord avro工具生成的内容-它只是一个生成的类,包含getter方法和builder对象/setter方法。任何使用者都可以将生产者类作为依赖项导入,反序列化消息,然后立即知道哪些字段可用。您不能保证在这里获得最新的模式-您将被降级,并且仅限于用于生成这些类的任何模式。 我通常使用avro-maven插件来创建类 您也可以从Java类中使用,而不是相反。在字段上设置@Union或@AvroDefault设置Apache kafka 基于模式演化的卡夫卡avro序列化,apache-kafka,avro,kafka-producer-api,Apache Kafka,Avro,Kafka Producer Api,我试图构建一个kakfa管道,将JSON输入数据读入Kafka主题。 我正在使用模式注册表的AVRO序列化,因为我的模式会定期更改。 到目前为止,GenericRecord用于解析模式。 但我最近了解到avro工具可用于读取模式和生成Java类,这些类可用于创建生产者代码。 在这两种选择中我很困惑。 你能建议我哪一个更好,因为我的模式经常改变吗 avro工具可用于读取模式并生成可用于创建生产者代码的java类 他们创建特定的Avro类,不是生产者代码,而是关于这个问题。两者都会起作用 在我看来
谢谢你的回复。因此,在我的例子中,由于模式频繁更改,我需要使用GenericRecord方法来确保生产者和消费者都可以使用最新的模式。如果可能的话,请提供一个记录方法的例子。与第一个链接相同的回购协议。查找其他消费者的目录示例一个重要的问题。无论如何,您都需要重新编写代码以获得更新的字段,因此,如果您自己完全控制架构,那么在哪个选项上应该没有重大区别。当我们将架构注册表与avro序列化一起使用时,当模式改变时,我们是否有任何其他的选择,不需要任何代码改变。我们是否可以使用avro工具根据可用的最新模式创建类。