如何从 Kafka 有线格式的 avro 事件中解码 schema id?

Gio*_*que 3 python avro apache-kafka

希望你们一切顺利。

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

我想解码 schema-id,以便能够从 schema-registry 获取 schema。我怎样才能用Python做到这一点?

例如,如果我有b'\x00\x00\x00\x04'schema-id 二进制文件,如何解码该二进制文件以便获得 schema-id 的实际值?

小智 5

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

from struct import unpack
magic, schema_id = unpack('>bI', header_bytes)
Run Code Online (Sandbox Code Playgroud)

confluent-kafka-python这是从库获取的方式中获取的schema_idhttps://github.com/confluenceinc/confluence-kafka-python/blob/e671bccb8a4f98302748ccf60d5d579f68c6613d/src/confluence_kafka/schema_registry/avro.py#L315