在普通的旧 Java 中,如果我使用 Serialized 接口(interface)实现一个类,Java 会负责序列化该类的实例,反之亦然。如果我们使用 Kafka,为什么需要提供单独的 Serializer 和 Deserializer 类?如果类实现了 Serialized,为什么 Kafka 不能使用与 Java Runtime Engine 相同的机制来序列化和反序列化实例?您能解释一下吗?
最佳答案
为了回答您的问题,Kafka 使用单独的 Serializer 和 Deserializer 类,以便应用程序可以选择要使用的序列化格式。它是一种增加灵 active 的可插入方法。
Kafka“附带”两个默认序列化器,一个字节和字符串反序列化器,正如您注意到的那样,它们都不使用 Java 序列化。正如其他评论提到的那样,当编写器和读取器应用程序紧密耦合、使用相同版本的 java 等时,经常会看到 java 序列化。在无法做出这些假设的环境中,它的问题变得更加明显。 Kafka 所使用的环境。还有 Kafka 在其 API 中支持其他编程语言的问题。
如果这是一个硬性要求,您可以使用默认的字节反序列化器从 java 中以字节形式读取消息,并对这些消息进行后处理。您编写的消息将是与您的 java 序列化对象相对应的字节字符串。这基本上使用 Kafka 作为字节传递。
关于java - 为什么Kafka不能使用Java Serialized接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57452855/