在普通的舊 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 作為字節傳遞。
添加回答
舉報
0/150
提交
取消