【发布时间】:2018-10-05 18:47:09
【问题描述】:
假设我在 topicA 上使用相同的键有以下两条消息
- message1: (k, A1)(在时间 t=0 收到)
- message2: (k, A2)(在时间 t=5 收到)
和拓扑
KStream<Integer, A> streamA = builder.stream(topicA);
KTable<Integer, B> tableB = builder.table(topicB);
streamA.leftJoin(tableB, (a, b) -> myJoiner(a,b)).to(topicAB);
假设myJoiner(a1, b) 需要100 个时间单位,myJoiner(a2, b) 需要10 个时间单位。消息将按什么顺序出现在 topicAB 上?
我要弄清楚的是 stream.leftJoin(table, (k,v)->f(k,v)) 是否是阻塞操作当流、表和 k 时是相同的。? (在我的示例中,这意味着 myJoiner(a1, b) 将首先出现在时间 t=100 左右,而 myJoiner(a2,b) 将出现在时间 t=110 左右)。或者它是异步的(这意味着 myJoiner(a2,b) 将首先出现在时间 t=15 左右,而 myJoiner(a1,b) 将在时间 t=100 左右出现)
谢谢, 大卫
【问题讨论】:
标签: apache-kafka apache-kafka-streams