在 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.serde
和 default.value.serde
,以使其语义更清晰。)
对于您链接的示例:我没有仔细检查,但如果所有操作员都指定 Serdes,则实际上不需要配置。
在 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.serde
和 default.value.serde
,以使其语义更清晰。)
对于您链接的示例:我没有仔细检查,但如果所有操作员都指定 Serdes,则实际上不需要配置。