Producer 将消息序列化并以字节数组的形式发送给 Broker。消费者反序列化这些字节数组。Broker 总是存储和传递字节数组。我是这样理解的。
但是当您在Kafka中使用REST 代理时,生产者使用 base64 对消息进行编码,而消费者对这些 base64 消息进行解码。
生产者和消费者的 Python 示例:
# Producer using the REST Proxy
payload = {"records" :
[{
"key":base64.b64encode("firstkey"),
"value":base64.b64encode("firstvalue")
}]}
# Consumer using the REST Proxy
print "Message Key:" + base64.b64decode(message["key"])
为什么你用base64而不是字节数组向Broker发送消息?使用 REST 代理时,Broker 以 base64 格式存储消息?