2017-06-04 33 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,配置实际上是不必要。