Kafka流是否有可能将输出写入两个不同的主题?

时间:2018-08-08 11:48:15

标签: apache-kafka apache-kafka-streams

我需要一个流来对主题A中的值进行分组,将分组后的值发送至主题B,并在翻滚时间窗口内将这些分组后的值的总和发送至主题C。 有可能在卡夫卡这样做吗?还是流只能从一个主题读取和写入?

1 个答案:

答案 0 :(得分:2)

是的。例如,您可以拆分输入流并写入不同的主题:

KStream stream = ...
KStream[] splitStream = stream.branch(...);

splitStream[0].to("topic-1");
splitStream[1].to("topic-2");

您还可以通过to(TopicNameExtractor)使用更动态的方法。

您还可以“广播”流以应用不同的逻辑。重用相同的KStream变量可确保逻辑上复制每个记录,并通过多个并行的下游操作对其进行处理:

KStream stream = ...

KStream filterdStream = stream.filter();
KTable count = stream.groupBy().count();