如何在 Kafka-Python 中指定字节数组序列化器/反序列化器

Ole*_*nin 4 python apache-kafka kafka-consumer-api kafka-producer-api

org.apache.kafka.common.serialization.ByteArraySerializerKafka 的 Producer API 中有一个用于 Java 的类,还有一个org.apache.kafka.common.serialization.ByteArrayDeserializer用于 Consumer API 的类。

如果您在 Python 中使用 Kafka,是否有等效的类?

kel*_*ket 5

Python 没有内置的字节数组序列化器/反序列化器,但实现起来并不难。例如,如果您想将字符串转换为其生产者中的底层十六进制表示形式,您可以通过以下方式实现:

KafkaProducer(value_serializer=lambda v: binascii.hexlify(v.encode('utf-8')))
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您的消费者中有传入的字节,并且想要将它们转换为字符串表示形式,您可以这样做。

KafkaConsumer(value_deserializer=lambda v: binascii.unhexlify(a).decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

答案适用于 Python 3+。