为什么我们需要在Apache Kafka中指定Serializer?

问题描述:

我从this question得到了这个疑问。为什么我们需要在Apache Kafka中指定Serializer?

当我不使用Kafka Streams时,为什么在创建ZkClient时需要使用Serializer?

卡夫卡havily使用zookeeper存储元数据(主题)。对于该库使用com.101tec :: zkClient。根据源代码ZkClient,它需要ZkSerializer用于序列化/反序列化从zookeeper发送/返回的数据。它内部的Kafka实现了ZkSerializer:ZKStringSerializer(在zkUtils中定义)。

但是,对于通常与kafka(生产/消费)交互,您不需要创建ZkClient。只需要'行政'工作。

+0

感谢您的回答。请阅读我发布的链接中最受欢迎的评论。如果我们在创建主题时没有指定序列化器,则它实际上并不是由Kafka创建的。这是什么意思?这让我困惑。 –

+0

@GopsAB我会假设它连接的方式是如何将您的主题名称序列化并写入zookeeper。当你显示主题列表时 - 它只是zookeeper中所有节点的列表。虽然kafka可以将其视为无效的主题名称 – Natalia