用python的KafkaProducer远程往kafka写入中文而不转换成二进制

发表于: 2022-02-16   最后更新时间: 2022-02-16 19:07:10   1,245 游览

怎么使用KafkaProducer写入中文而不转换成二进制

producer = KafkaProducer (bootstrap_servers=['192.168.0.64:9092'],value_serializer=lambda m: json.dumps(m).encode())
producer.send("shuzu_test1",action)

其中data是一个字典,试过:

json.dumps(m).encode("UTF8")

还是二进制如下:

kafka写入中文乱码

发表于 2022-02-16

kafka之所以快,就是因为在内部流转的时候,都是统一的二进制。

另一个是无效率是字节复制。 在低速率下,这不是一个问题,但负载的情况下影响是显着的。 为了避免这种情况,我们采用由生产者,经纪人和消费者共享的标准化二进制消息格式(样数据块就可以在它们之间自由传输,无需转换)。

摘自:kafka效率

-> 半兽人 2年前

但是为什么在linux下kafka自带的客户端直接写入的中文,直接读出来就是中文,但是在用模块写入的时候就是二进制再读出来就要转换?

半兽人 -> 2年前

生产者/消费者命令行客户端序列化默认是String,所以你的程序也要设置的。

生产者:

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

参考:Kafka Producer配置

消费者:

props.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

参考:Kafka Consumer配置

-> 半兽人 2年前

感谢大佬

你的答案

查看kafka相关的其他问题或提一个您自己的问题