如何让 Kafka Avro 消费者读取具有特定模式 ID / 版本但不生成 Avro 模式 java class 的有效负载?

How to let Kafka Avro consumer read payload with the specific schema id / version but without generating the Avro schema java class?

我正在使用 Avro 和架构注册表。我想知道如何让消费者通过在 Java 项目中指定模式 ID 而无需 Avro 模式的 Java class 来读取数据。据我了解,我们无法使用通用记录指定模式版本,我想知道通用记录如何处理模式演变。对于 Specific Record,我们必须在 Java 项目中为 Avro schema 生成 Java class,在云应用中可能不方便。有什么方法可以在我的 Java 项目中选择模式 ID 作为配置,而无需从模式注册表下载模式文件?非常感谢!

您可以查看 source code here 从无法绕过/覆盖 ID 查找的消息中获取架构 ID。

这并不是说您可以编写自己的反序列化器或小型 Kafka Streams 作业来覆盖消息中的 ID,然后再转发到 Confluent 反序列化器

Avro 需要 reader 和编写器模式,ID 查找是针对编写器的。当您提供特定记录时,您定义的 reader 不一定必须来自注册表,只需要与书面消息兼容