在普通的舊 Java 中,如果我實現(xiàn)一個帶有 Serializable 接口的類,Java 會負責(zé)序列化該類的實例,反之亦然。如果我們使用 Kafka,為什么我們需要提供一個單獨的 Serializer 和 Deserializer 類?如果類實現(xiàn)了 Serializable,為什么 Kafka 不能使用與 Java Runtime Engine 相同的機制來序列化和反序列化實例?你能解釋一下嗎?
1 回答

30秒到達戰(zhàn)場
TA貢獻1828條經(jīng)驗 獲得超6個贊
為了回答您的問題,Kafka 使用了一個單獨的 Serializer 和 Deserializer 類,以便應(yīng)用程序可以選擇要使用的序列化格式。它是一種增加靈活性的可插入方法。
Kafka 確實“附帶”了兩個默認序列化器,一個字節(jié)和字符串反序列化器,因為您注意到這些都沒有使用 Java 序列化。正如其他評論提到的,當(dāng)編寫器和讀取器應(yīng)用程序緊密耦合、使用相同版本的 java 等時,經(jīng)常會看到 java 序列化。在無法做出這些假設(shè)的環(huán)境中,問題變得更加明顯。像使用 Kafka 的環(huán)境。Kafka 在其 API 中也支持其他編程語言。
如果這是一個硬性要求,您可以使用默認字節(jié)反序列化器以字節(jié)形式從 java 中讀取消息,然后對這些消息進行后處理。您編寫的消息將是一個字節(jié)字符串,對應(yīng)于您的 java 序列化對象。這基本上使用 Kafka 作為字節(jié)傳遞。
添加回答
舉報
0/150
提交
取消