java - 为什么Kafka不能使用Java Serialized接口(interface)

标签 java apache-kafka

在普通的旧 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/

相关文章:

java - 在 Spring Boot 上删除 "Using default security password"

c - librdkafka 消费者未收到来自代理的消息

spring-boot - Spring Boot 与 Apache Kafka : Messages not being read

java - 如何关闭 Apache Kafka 连接器任务?

apache-kafka - 如何将现有的 kafka 主题分区分散到更多目录中?

java - Netbeans 转发 X11 字体问题

Java如何在运行时创建多个jlist

java - java中使用泛型类型代替反射来创建实例

java - 如何解决Kafka Avro反序列化问题

audio - 在 Raspi 上使用 javax.sound.sampled 和 openjdk-7