在 Kafka 流中,VALUE_SERDE_CLASS_CONFIG 做什么

In Kafka streams, what does VALUE_SERDE_CLASS_CONFIG do

在 Kafka 流中,目的是什么:

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 调用,一切似乎仍然正常。另外,请注意我们不会将 Serdes.Long() 传递给 VALUE_SERDE_CLASS_CONFIG,即使它在 to 调用中使用。

摘自 confluent sample 的片段。

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

例如,您可以在不指定 serdes 的情况下创建流,例如

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

对于这种情况,Streams 将使用在主题 "TextLinexTopic" 的配置中指定为 key/value Serde 的任何内容。 (顺便说一句,在即将到来的 0.11 中,两个参数都被重命名为 default.key.serdedefault.value.serde,以使其语义更清晰。)

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