Kafka 将avro模式与有效负载沿着发送

xzv2uavs  于 2023-01-29  发布在  Apache
关注(0)|答案(1)|浏览(129)

我想为Kafka生产者/消费者实现avro串行化器/反串行化器。可以有多个场景
1.写入器架构和读取器架构相同,永远不会更改。在这种情况下,不需要将avro架构与负载沿着发送。在使用者端,我们可以使用读取器架构本身来反序列化负载。此post中提供了示例实现
1.当模式随时间变化时使用模式解析特性。因此avro仍然可以使用模式解析规则反序列化不同的读取器和写入器模式。因此我们需要发送avro scehma沿着有效载荷

我的问题如何在生成时发送模式,以便反序列化器读取整个字节并分离出实际的有效负载和模式?我正在使用avro生成的类。注意,我不想使用模式注册表。

qkf9rpyu

qkf9rpyu1#

在任何Avro用例中,您都需要一个读取器和写入器模式,即使它们是相同的。SpecificDatumWriter(用于序列化程序)和SpecificDatumReader(用于反序列化程序)都采用一个模式。
您可以使用Kafka记录头来编码AVSC字符串,并与有效负载沿着发送,但请记住Kafka记录/批处理有一个允许大小的上限。使用 some Schema Registry(不必是Confluent的),将开销从整个字符串减少到简单的整数ID。

相关问题