首页 > 解决方案 > Kafka Streams:POJO 序列化/反序列化向后兼容性

问题描述

是否可以在扩展Kafka接口Serializer/Deserializer(org.apache.kafka.common.serialization)的类中定义serialVersionUID,类似于我们用Serializable实现的那个?在 Java/Kafka 升级期间,我们会遇到异常 - NotSerializableException 吗?

例如,在 KTable 中,键/值是使用自定义类对象序列化的。因此,如果我们保留了一些数据,并且如果对 Kafka 或 Java 或两者都进行了任何升级,我们是否能够读取(反序列化)在升级之前保留的键/值,而没有任何向后兼容性限制?

参考: 什么是 serialVersionUID,为什么要使用它?

标签: apache-kafkaapache-kafka-streams

解决方案


如果您编写自定义 Kafka Serializer/Deserializer则无需指定 Java 的serialVersionUID. 你仍然可以这样做,但它不会被使用。

Java 的目的serialVersionUID是使用 Java 内置的序列化机制。但是当您为 Kafka实现自定义Serializer/时,不会使用此机制。Deserializer


推荐阅读