在Kafka流中,VALUE_SERDE_CLASS_CONFIG做了什么

时间:2017-06-04 19:40:11

标签: apache-kafka apache-kafka-streams

在Kafka流中,目的是什么:

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

......考虑到在builder中召唤了Serdes:

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

...并在to

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

在我的代码中,我删除了上面两个props.put调用,一切似乎仍然正常。另请注意,我们不会将Serdes.Long()传递给VALUE_SERDE_CLASS_CONFIG,即使它已在to调用中使用。

取自confluent sample

的摘录

1 个答案:

答案 0 :(得分:1)

它为所有未指定serde的操作设置默认键或值serde。

例如,您可以创建流而不指定像

这样的serdes
"TextLinexTopic"

对于这种情况,Streams将在主题default.key.serde的配置中使用指定为键/值Serde的任何内容。 (顺便说一句,在即将到来的default.value.serde中,这两个参数都会重命名为0.11SELECT * from tablename WHERE p_code=? ORDER BY date DESC LIMIT 1 ,以使其语义更清晰。)

对于您链接到的示例:我没有仔细检查,但如果所有操作员都指定了Serdes,则实际上不需要配置。