我经常在周围阅读的书籍和博客中看到这种模式,但无法完全理解它的用处:
Stream.GrouBy.Agg.toStream.to(Topic)
在将KTable的结果具体化为主题之前将KTable转换为流有什么好处?
我们不能只写Stream.GrouBy.Agg.to(Topic)
这两个词之间的含义有什么区别?
EDIT1
javadoc表示不建议在Ktable上使用to
,建议先转换为流,然后再使用to
。
我想知道为什么吗?
答案 0 :(得分:2)
根据Javadoc,KTable .to()
方法的实现如下所示,它在内部调用.toStream()
时:
@SuppressWarnings("deprecation")
@Override
public void to(final String topic) {
to(null, null, null, topic);
}
@SuppressWarnings("deprecation")
@Override
public void to(final Serde<K> keySerde,
final Serde<V> valSerde,
final StreamPartitioner<? super K, ? super V> partitioner,
final String topic) {
this.toStream().to(keySerde, valSerde, partitioner, topic);
}
这两种方法在技术上没有区别,上面只是通过隐藏.toStream()
方法调用在内部将KTable转换为KStream,而在Stream.GrouBy.Agg.toStream.to(Topic)
中,它显式调用.toStream()
。 / p>