2016-11-23 34 views

回答

3

Kafka Connect旨在將卡夫卡中序列化格式的問題從converters的概念中分離出來。正如您似乎已經發現的那樣,您需要將key.convertervalue.converter類調​​整爲支持protobufs的實現。這些類通常作爲一個普通的Kafka Deserializer實現,然後執行從序列化特定的運行時格式(例如protobufs中的Message)到Kafka Connect的運行時API(它沒有任何關聯的序列化格式 - 它只是一個一組Java類型和一個類來定義模式)。

我不知道現有的實現。實現這一點的主要挑戰是protobufs是自描述的(也就是說,可以在不訪問原始模式的情況下對其進行反序列化),但由於其字段只是整數ID,所以如果沒有以下要求,您可能無法得到有用的模式信息:a)需要特定模式可用於轉換器,例如通過配置(這會使遷移架構更加複雜)或者b)爲您的數據提供模式註冊表服務+封裝格式,使您可以動態查找模式。

+2

我有一個勉強工作的實現。我使用'avro-protobuf'擴展了'AvroConter'類的'Deserializer'。據我所知,Kafka Connect希望限制支持的格式數量,即JSON和Avro,因此我不會按原樣發佈它。然後,我不想複製整個'avro-converter'並將其重命名爲'protobuf-converter'。什麼是貢獻該項目的最佳方法? –

+2

Kafka Connect絕對不希望限制支持的格式數量。恰恰相反,我們包括轉換器,併爲通用連接器提供數據API,以支持不同序列化格式的插入。 protobuf的實現絕對有價值,我建議發佈它。 儘管我們希望獲得相當完整的實現,但我們願意將其與AvroConverter一起納入我們的存儲庫。我看到的最大問題是,爲了獲得有用的實現,我期望您需要類似於模式註冊表的東西。 –

相關問題