为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Kafka 不能使用 Java Serializable 接口

为什么 Kafka 不能使用 Java Serializable 接口

忽然笑 2023-06-04 15:13:32
在普通的旧 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 作为字节传递。


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信