给定将消息发布到两个不同主题的Kafka streams拓扑,是否可以保证在这两个分支中执行不同步骤的顺序,还是这些分支完全分离并并行执行?
示例
KStream<..., ...> filteredStream = builder.stream("input-topic", ...).filter(...)...;
filteredStream.mapValues(this::mapOne).to("output-topic-one", ...);
filteredStream.flatMap(this::mapTwo).to("output-topic-two", ...);在本例中,在调用output-topic-__one mapTwo或将消息发布到output-topic-__two?之前,会执行mapOne并将其发布到吗?换句话说,是否保证在将output-topic-__two消息发布到mapOne消息之前,将完成
拓扑可视化
当查看拓扑描述的可视化(请参见底部;使用https://zz85.github.io/kafka-streams-viz/创建)时,您可以看到这两个分支。但是你也可以在每个气泡中看到这些数字,这也可能表明有一个执行顺序(1-4,5-6-7,8-9)。

拓扑描述
Topologies:
Sub-topology: 0
Source: KSTREAM-SOURCE-0000000000 (topics: [input-topic])
--> KSTREAM-FILTER-0000000001
Processor: KSTREAM-FILTER-0000000001 (stores: [])
--> KSTREAM-FILTER-0000000002
<-- KSTREAM-SOURCE-0000000000
Processor: KSTREAM-FILTER-0000000002 (stores: [])
--> KSTREAM-MAP-0000000003
<-- KSTREAM-FILTER-0000000001
Processor: KSTREAM-MAP-0000000003 (stores: [])
--> KSTREAM-FILTER-0000000004
<-- KSTREAM-FILTER-0000000002
Processor: KSTREAM-FILTER-0000000004 (stores: [])
--> KSTREAM-MAPVALUES-0000000005, KSTREAM-FLATMAP-0000000008
<-- KSTREAM-MAP-0000000003
Processor: KSTREAM-MAPVALUES-0000000005 (stores: [])
--> KSTREAM-FILTER-0000000006
<-- KSTREAM-FILTER-0000000004
Processor: KSTREAM-FILTER-0000000006 (stores: [])
--> KSTREAM-SINK-0000000007
<-- KSTREAM-MAPVALUES-0000000005
Processor: KSTREAM-FLATMAP-0000000008 (stores: [])
--> KSTREAM-SINK-0000000009
<-- KSTREAM-FILTER-0000000004
Sink: KSTREAM-SINK-0000000007 (topic: output-topic-one)
<-- KSTREAM-FILTER-0000000006
Sink: KSTREAM-SINK-0000000009 (topic: output-topic-two)
<-- KSTREAM-FLATMAP-0000000008发布于 2021-08-06 02:36:38
https://stackoverflow.com/questions/65796417
复制相似问题