2017-06-04 20 views
1

在卡夫卡流,什麼是目的:在卡夫卡流,這是什麼VALUE_SERDE_CLASS_CONFIG做

props.put(StreamsConfig.KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); 
props.put(StreamsConfig.VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); 

...考慮到SERDES可以在builder叫了一聲:

final KStream<String, String> textLines = builder.stream(stringSerde, stringSerde, "TextLinesTopic"); 

...在to

wordCounts.to(stringSerde, longSerde, "WordsWithCountsTopic"); 

在我的代碼我刪除了上述兩個props.put電話和一切似乎仍然正常工作。另請注意,即使在調用to時使用了Serdes.Long(),也不會將其傳遞給VALUE_SERDE_CLASS_CONFIG。

摘自confluent sample的片段。

回答

1

它爲未指定serde的所有操作設置默認鍵或值serde。

例如,你可以在不指定SERDES創建流像

final KStream<String, String> textLines = builder.stream("TextLinesTopic"); 

對於這種情況,流將使用任何被指定爲在配置爲話題"TextLinexTopic"鍵/值SERDE。 (順便說一句,這兩個參數都重命名爲default.key.serde,並在即將到來的0.11default.value.serde使它們的語義清晰。)

對於例如,你鏈接到:我沒仔細檢查,但如果所有的運營商無論如何指定的SERDES,配置實際上是不必要。