如何解码Kafka-wire格式的avro事件的模式id



希望你们一切顺利。

我正在从Kafka主题中获取数据,在该主题中,我为每种类型都有多个事件类型和模式。由于Kafka使用有线格式,第一个字节是魔术字节,从字节1到4,我们有模式id,在第五个字节之后,我们有数据本身。

我想解码模式id,这样我就可以从模式注册表中获得模式。我如何用Python做到这一点?

例如,如果我有b'x00x00x00x04'作为模式id二进制文件,我如何解码这个二进制文件,以便获得模式id的实际值?

给定完整的五字节标头,您应该能够执行以下操作:

from struct import unpack
magic, schema_id = unpack('>bI', header_bytes)

这取自confluent-kafka-python库获取schema_id的方式:https://github.com/confluentinc/confluent-kafka-python/blob/e671bccb8a4f98302748ccf60d5d579f68c6613d/src/confluent_kafka/schema_registry/avro.py#L315

最新更新