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

stw*_*ykd 1 apache-kafka apache-kafka-streams

我需要一个流来对主题 A 中的值进行分组,将分组值发送到主题 B,然后在滚动时间窗口内将这些分组值的总和发送到主题 C。在 Kafka 中是否可以做到这一点?或者一个流只能从一个主题读取和写入吗?

Mat*_*Sax 5

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

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

splitStream[0].to("topic-1");
splitStream[1].to("topic-2");
Run Code Online (Sandbox Code Playgroud)

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

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

KStream stream = ...

KStream filterdStream = stream.filter();
KTable count = stream.groupBy().count();
Run Code Online (Sandbox Code Playgroud)