Kafka Streams:POJO serialize/deserialize 向后兼容性
Kafka Streams: POJO serialize/deserialize backward compatibility
serialVersionUID是否可以在扩展Kafka接口Serializer/Deserializer(org.apache.kafka.common.serialization)的class中定义,类似于我们用Serializable实现的?在 Java/Kafka 升级期间,我们会遇到异常 - NotSerializableException 吗?
例如,在 KTable 中,key/value 使用自定义 class 对象进行序列化。因此,如果我们保留了一些数据,并且如果对 Kafka 或 Java 或两者进行了任何升级,我们是否能够读取(反序列化)在升级之前保留的 key/value,没有任何向后兼容性约束?
参考:
What is a serialVersionUID and why should I use it?
如果您编写自定义 Kafka Serializer
/Deserializer
,则无需指定 Java 的 serialVersionUID
。你仍然可以这样做,但它不会被使用。
Java 的 serialVersionUID
的目的是使用 Java 的内置序列化机制。但是当你为 Kafka 实现自定义 Serializer
/Deserializer
时,不会使用这种机制。
serialVersionUID是否可以在扩展Kafka接口Serializer/Deserializer(org.apache.kafka.common.serialization)的class中定义,类似于我们用Serializable实现的?在 Java/Kafka 升级期间,我们会遇到异常 - NotSerializableException 吗?
例如,在 KTable 中,key/value 使用自定义 class 对象进行序列化。因此,如果我们保留了一些数据,并且如果对 Kafka 或 Java 或两者进行了任何升级,我们是否能够读取(反序列化)在升级之前保留的 key/value,没有任何向后兼容性约束?
参考: What is a serialVersionUID and why should I use it?
如果您编写自定义 Kafka Serializer
/Deserializer
,则无需指定 Java 的 serialVersionUID
。你仍然可以这样做,但它不会被使用。
Java 的 serialVersionUID
的目的是使用 Java 的内置序列化机制。但是当你为 Kafka 实现自定义 Serializer
/Deserializer
时,不会使用这种机制。