在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
调用中使用。
答案 0 :(得分:1)
它为所有未指定serde的操作设置默认键或值serde。
例如,您可以创建流而不指定像
这样的serdes"TextLinexTopic"
对于这种情况,Streams将在主题default.key.serde
的配置中使用指定为键/值Serde的任何内容。 (顺便说一句,在即将到来的default.value.serde
中,这两个参数都会重命名为0.11
和SELECT * from tablename WHERE p_code=? ORDER BY date DESC LIMIT 1
,以使其语义更清晰。)
对于您链接到的示例:我没有仔细检查,但如果所有操作员都指定了Serdes,则实际上不需要配置。