在普通的旧 Java 中,如果我实现一个带有 Serializable 接口的类,Java 会负责序列化该类的实例,反之亦然。如果我们使用 Kafka,为什么我们需要提供一个单独的 Serializer 和 Deserializer 类?如果类实现了 Serializable,为什么 Kafka 不能使用与 Java Runtime Engine 相同的机制来序列化和反序列化实例?你能解释一下吗?
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
为了回答您的问题,Kafka 使用了一个单独的 Serializer 和 Deserializer 类,以便应用程序可以选择要使用的序列化格式。它是一种增加灵活性的可插入方法。
Kafka 确实“附带”了两个默认序列化器,一个字节和字符串反序列化器,因为您注意到这些都没有使用 Java 序列化。正如其他评论提到的,当编写器和读取器应用程序紧密耦合、使用相同版本的 java 等时,经常会看到 java 序列化。在无法做出这些假设的环境中,问题变得更加明显。像使用 Kafka 的环境。Kafka 在其 API 中也支持其他编程语言。
如果这是一个硬性要求,您可以使用默认字节反序列化器以字节形式从 java 中读取消息,然后对这些消息进行后处理。您编写的消息将是一个字节字符串,对应于您的 java 序列化对象。这基本上使用 Kafka 作为字节传递。
添加回答
举报
0/150
提交
取消