在将Ktable实现为主题之前将Ktable转换为Streaming有什么好处?

时间:2019-07-09 17:04:38

标签: apache-kafka-streams

我经常在周围阅读的书籍和博客中看到这种模式,但无法完全理解它的用处:

Stream.GrouBy.Agg.toStream.to(Topic)

在将KTable的结果具体化为主题之前将KTable转换为流有什么好处?

我们不能只写Stream.GrouBy.Agg.to(Topic)

这两个词之间的含义有什么区别?

EDIT1

javadoc表示不建议在Ktable上使用to,建议先转换为流,然后再使用to

我想知道为什么吗?

1 个答案:

答案 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>